本章内容概要

列表内置方法

字典内置方法

元组内置方法

集合内置方法

可变类型与不可变类型

本章内容详细

1.列表内置方法 list

列表在调用内置方法之后不会产生新的值

1.1 统计列表中的数据值的个数

  1. l1 = ['jason', 'kevin', 'oscar', 'tony', 'jerry']
  2. l2 = [77, 22, 55, 33, 44, 99]
  3. # 统计列表中数据的个数
  4. print(len(l1)) # 5
  5. print(len(l2)) # 6

2.增

2.1 尾部追加数据值append() 括号内无论写什么数据类型 都是当成一个数据值增加

  1. # 2.1尾部追加数据值append() 括号内无论写什么数据类型 都是当成一个数据值追加
  2. res = l1.append('owen')
  3. print(res) # None 空
  4. print(l1) # ['jason', 'kevin', 'oscar', 'tony', 'jerry', 'owen']

  1. s1 = '$hello$'
  2. res1 = s1.split('$')
  3. print(res1) # ['', 'hello', '']
  4. print(s1) # $hello$
  5. l1.append([1, 2, 3, 4, 5])
  6. print(l1) # ['jason', 'kevin', 'oscar', 'tony', 'jerry', [1, 2, 3, 4, 5]]

2.2 任意位置插入数据值insert 括号内i而什么数据类型 都是当成一数据子方恒

  1. # 意位置插入数据值insert() 括号内无论写什么数据类型 都是当成一个数据值插入
  2. l1.insert(0, [1, 2, 3])
  3. print(l1) # [[1, 2, 3], 'jason', 'kevin', 'oscar', 'tony', 'jerry']
  4. l2.insert(0, '插队') # ['插队', [1, 2, 3], 'jason', 'kevin', 'oscar', 'tony', 'jerry']
  5. print(l2)

2.3 扩展列表

方式1

  1. # 2.3 扩展列表
  2. new_1 = [11, 22, 33, 44, 55]
  3. new_2 = [1, 2, 3]
  4. # 方式1
  5. for i in new_1:
  6. new_2.append(i)
  7. print(new_2) # [1, 2, 3, 11, 22, 33, 44, 55

方式2

  1. # 方式2
  2. print(new_1 + new_2) # [11, 22, 33, 44, 55, 1, 2, 3]

方式3(推荐使用)  extend

  1. # 方式3(推荐使用)
  2. new_1.extend(new_2) # 括号里面必须是支持for循环的数据类型 for循环+append()
  3. print(new_1) # [11, 22, 33, 44, 55, 1, 2, 3]

3.查询数据与修改数据

  1. # 3.查询数据与修改数据
  2. print(l1) # ['jason', 'kevin', 'oscar', 'tony', 'jerry']
  3. print(l1[0]) # jason
  4. print(l1[1:4]) # ['kevin', 'oscar', 'tony']
  5. l1[0] = 'jasonNM'
  6. print(l1) # ['jasonNM', 'kevin', 'oscar', 'tony', 'jerry']

4.删除数据

4.1通用数据策略

  1. # 4.1通用数据策略
  2. del l1[0] # 通过索引即可
  3. print(l1) # ['kevin', 'oscar', 'tony', 'jerry']

4.2指名道姓的删除 remove

  1. # 4.2 指名道姓删除
  2. res = l1.remove('jason') # 括号内必须填写明确的数据值
  3. print(l1, res) # ['kevin', 'oscar', 'tony', 'jerry'] None

4.3 先取出数值 在删除  pop

  1. # 4.3 先取出数据值 然后再删
  2. res = l1.pop() # 默认取出列表尾部数据值 然后再删
  3. print(l1, res) # ['jason', 'kevin', 'oscar', 'tony'] jerry
  4. res = l1.pop(0)
  5. print(res, l1) # jason ['kevin', 'oscar', 'tony']

5.查看索引值 index

  1. # 5.查看数据值对于的索引值
  2. print(l1.index('jason'))

6.统计某个数据值出现的数据 append

  1. # 6.统计某个数据值出现的次数
  2. l1.append('jason')
  3. print(l1.count('jason')) # 2

7.排序 sort 升序  sort(reverse=True)  降序    b.sort(key=a.index)  去重b按a的列表排序

  1. l2.sort() # 升序 [22, 33, 44, 55, 77, 99]
  2. print(l2)
  1. l2.sort(reverse=True) # 降序
  2. print(l2) # [99, 77, 55, 44, 33, 22]

8.翻转 reverse

  1. l1.reverse() # 前后跌倒
  2. print(l1) # ['jerry', 'tony', 'oscar', 'kevin', 'jason']

9.比较运算

  1. new_1 = [99, 22]
  2. new_2 = [11, 22, 33, 44]
  3. print(new_1 > new_2) # True 是按照位置顺序一一比较

  1. new_1 = ['a', 11]
  2. new_2 = [11, 22, 33, 44]
  3. print(new_1 > new_2) # 不同数据类型之间默认无法直接做操作

  1. new_1 = ['a', 11] # a 97
  2. new_2 = ['A', 22, 33, 44] # A 65
  3. print(new_1 > new_2) # True
  4. new_1 = ['你', 11] # a 97
  5. new_2 = ['我', 22, 33, 44] # A 65
  6. print(new_1 > new_2) # False

2.字典内置方法 dict

字典很少涉及到类型转换 都是直接定义使用

  1. # 类型转换(了解即可) 字典很少涉及到类型转换 都是直接定义使用
  2. print(dict([('name', 'jason'), ('pwd', 123)])) # {'name': 'jason', 'pwd': 123}
  3. print(dict(name='jason', pwd=123)) # {'name': 'jason', 'pwd': 123}

1.字典内k:v键值对是无序的

2.取值

  1. # 2.取值操作
  2. print(info['username']) # 不推荐使用 键不存在会直接报错
  3. print(info['xxx']) # 不推荐使用 键不存在会直接报错
  4. print(info.get('username')) # jason
  5. print(info.get('xxx')) # None
  6. print(info.get('username', '键不存在返回的值 默认返回None')) # jason
  7. print(info.get('xxx', '键不存在返回的值 默认返回None')) # 键不存在返回的值 默认返回None
  8. print(info.get('xxx', 123)) # 123
  9. print(info.get('xxx')) # None

3.统计字典中键值对的个数  len

  1. print(len(info)) # 3

4.修改数据 info

  1. info['username'] = 'jasonNB' # 键存在则是修改
  2. print(info) # {'username': 'jasonNB', 'pwd': 123, 'hobby': ['read', 'run']}

5.新增数据 info

  1. # 5.新增数据
  2. info['salary'] = 6 # 键不存在则是新增
  3. print(info) # {'username': 'jason', 'pwd': 123, 'hobby': ['read', 'run'], 'salary': 6}

6.删除数据

方式1

  1. # 方式1
  2. del info['username']
  3. print(info) # {'pwd': 123, 'hobby': ['read', 'run']}

方式2

  1. res = info.pop('username')
  2. print(info, res) # {'pwd': 123, 'hobby': ['read', 'run']} jason

方式3

  1. # 方式3
  2. info.popitem() # 随机删除
  3. print(info) # {'username': 'jason', 'pwd': 123}

7.快速获取键 值 键值对数据

  1. print(info.keys()) # 获取字典所有的k值 结果当成是列表即可dict_keys(['username', 'pwd', 'hobby'])
  2. print(info.values()) # 获取字典所有的v值 结果当成是列表即可dict_values(['jason', 123, ['read', 'run']])
  3. print(info.items()) # 获取字典kv键值对数据 组织成列表套元组dict_items([('username', 'jason'), ('pwd', 123), ('hobby', ['read', 'run'])])

8.修改字典数据 键存在则是修改 键不存在则是新增

  1. # 8.修改字典数据 键存在则是修改 键不存在则是新增
  2. info.update({'username':'jason123'})
  3. print(info) # {'username': 'jason123', 'pwd': 123, 'hobby': ['read', 'run']}
  4. info.update({'xxx':'jason123'})
  5. print(info) # {'username': 'jason123', 'pwd': 123, 'hobby': ['read', 'run'], 'xxx': 'jason123'}

9.快速构造字典 给的值默认情况下所有的键都用一个

  1. # 9.快速构造字典 给的值默认情况下所有的键都用一个
  2. res = dict.fromkeys([1, 2, 3], None)
  3. print(res) # {1: None, 2: None, 3: None}
  4. new_dict = dict.fromkeys(['name', 'pwd', 'hobby'], []) # {'name': [], 'pwd': [], 'hobby': []}
  5. new_dict['name'] = []
  6. new_dict['name'].append(123)
  7. new_dict['pwd'].append(123)
  8. new_dict['hobby'].append('read')
  9. print(new_dict) # {'name': [123], 'pwd': [123, 'read'], 'hobby': [123, 'read']}

  1. res = dict.fromkeys([1, 2, 3], 234234234234234234234)
  2. print(id(res[1])) # 2340954113104
  3. print(id(res[2])) # 2340954113104
  4. print(id(res[3])) # 2340954113104

10.键存在则获取键对应的值 键不存在则设置 并返回设置的新值

3.元组内置方法 tuple

  1. # 关键字 tuple
  2. # 类型转换 支持for循环的数据类型都可以转元组
  3. print(tuple(123)) # 不可以
  4. print(tuple(123.11)) # 不可以
  5. print(tuple('zhang')) # 可以
  1. t1 = () # tuple
  2. print(type(t1))
  3. t2 = (1) # int
  4. print(type(t2))
  5. t3 = (11.11) # float
  6. print(type(t3))
  7. t4 = ('jason') # str
  8. print(type(t4))

当元组内只有一个数据值的时候 逗号不能省略,如果省略了 那么括号里面是什么数据类型就是什么数据类型
建议:编写元组 逗号加上 哪怕只有一个数据(111, ) ('jason', )ps:以后遇到可以存储多个数据值的数据类型 如果里面只有一个数据 逗号也趁机加上

  1. t2 = (1,) # tuple
  2. print(type(t2))
  3. t3 = (11.11,) # tuple
  4. print(type(t3))
  5. t4 = ('jason',) # tuple
  6. print(type(t4))

1.统计元组内个数

  1. t1 = (11, 22, 33, 44, 55, 66)
  2. # 1.统计元组内数据值的个数
  3. print(len(t1)) # 6

2.查与改

  1. # 2.查与改
  2. print(t1[0]) # 可以查 11
  3. t1[0] = 222 # 不可以改
  4. """元组的索引不能改变绑定的地址"""

  1. t1 = (11, 22, 33, [11, 22])
  2. t1[-1].append(33)
  3. print(t1) # (11, 22, 33, [11, 22, 33])

4.集合内置方法 set

set() 类型转换 支持for循环的 并且数据必须是不可变类型
1.定义空集合需要使用关键字才可以
2.集合内数据必须是不可变类型(整型 浮点型 字符串 元组 布尔值)

3.去重

  1. # 去重
  2. s1 = {1, 2, 12, 3, 2, 3, 2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4}
  3. print(s1) # {1, 2, 3, 4, 5, 12}
  4. l1 = ['jason', 'jason', 'tony', 'oscar', 'tony', 'oscar', 'jason']
  5. s2 = set(l1)
  6. l1 = list(s2)
  7. print(l1) # ['jason', 'tony', 'oscar']

4.模拟两个人的好友集合

1.求f1和f2的共同好友

  1. f1 = {'jason', 'tony', 'oscar', 'jerry'}
  2. f2 = {'kevin', 'jerry', 'jason', 'lili'}
  3. # 1.求f1和f2的共同好友
  4. print(f1 & f2) # {'jason', 'jerry'}

2.求f1/f2独有好友

  1. print(f1 - f2) # {'oscar', 'tony'}
  2. print(f2 - f1) # {'lili', 'kevin'}

3.求f1和f2所有的好友

  1. print(f1 | f2) # {'jason', 'kevin', 'lili', 'oscar', 'jerry', 'tony'}

4.求f1和f2各自独有的好友(排除共同好友)

  1. print(f1 ^ f2) # {'kevin', 'lili', 'tony', 'oscar'}

5.父集 子集

  1. # 5.父集 子集
  2. s1 = {1, 2, 3, 4, 5, 6, 7}
  3. s2 = {3, 2, 1}
  4. print(s1 > s2) # s1是否是s2的父集 s2是不是s1的子集
  5. print(s1 < s2)

5.可变类型与不可变类型

为什么字符串调用内置方法是产生新的值 列表调用内置方法是改变自身

1.可变类型  list  值改变(内置方法) 内存地址可以不变

  1. # 为什么字符串调用内置方法是产生新的值 列表调用内置方法是改变自身
  2. # 1.可变类型 list 值改变(内置方法) 内存地址可以不变
  3. l1 = [11, 22, 33]
  4. print(id(l1)) # 1359453669056
  5. l1.append(44) # [11, 22, 33, 44]
  6. print(id(l1)) # 1359453669056

2.不可变类型 str int float 值改变(内置方法),内存地址肯定变

  1. # 2.不可变类型 str int float 值改变(内置方法),内存地址肯定变
  2. s1 = '$hello$'
  3. print(id(s1)) # 2807369626992#
  4. s1 = s1.strip('$')
  5. print(id(s1)) # 2807369039344
  6. ccc = 666
  7. print(id(ccc)) # 2807369267664
  8. ccc = 990
  9. print(id(ccc)) # 2807374985904

作业

# 1.
# 利用列表编写一个员工姓名管理系统
# 输入1执行添加用户名功能
# 输入2执行查看所有用户名功能
# 输入3执行删除指定用户名功能
# ps: 思考如何让程序循环起来并且可以根据不同指令执行不同操作
# 提示: 循环结构 + 分支结构
# 拔高: 是否可以换成字典或者数据的嵌套使用完成更加完善的员工管理而不是简简单单的一个用户名(能写就写不会没有关系)

# 2.去重下列列表并保留数据值原来的顺序
# eg: [1, 2, 3, 2, 1]
# 去重之后[1, 2, 3]

  1. l1 = [2, 3, 2, 1, 2, 3, 2, 3, 4, 3, 4, 3, 2, 3, 5, 6, 5]
  2. l2 = list(set(l1)) # 把列表装换为集合去重之后在装换为列表
  3. l2.sort(key=l1.index) # 对去重后的列表按原始列表排序
  4. print(l2)

3.有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
pythons = {'jason', 'oscar', 'kevin', 'ricky', 'gangdan', 'biubiu'}
linuxs = {'kermit', 'tony', 'gangdan'}

1.求出即报名python又报名linux课程的学员名字集合

  1. print(pythons & linuxs)

2.求出所有报名的学生名字集合

  1. print(pythons | linuxs) # {'kevin', 'gangdan', 'jason', 'biubiu', 'kermit', 'tony', 'ricky', 'oscar'}

3.求出只报名python课程的学员名字

  1. print(pythons - linuxs) # {'kevin', 'oscar', 'ricky', 'jason', 'biubiu'}

4.求出没有同时这两门课程的学员名字集合

  1. print(pythons ^ linuxs) # {'biubiu', 'tony', 'kermit', 'jason', 'ricky', 'oscar', 'kevin'}

【python基础】第11回 数据类型内置方法 02的更多相关文章

  1. 【python基础】第09回 数据类型内置方法 01

    本章内容概要 1.数据类型的内置方法简介 2.整型相关方法 3.浮点型相关方法 4.字符串相关方法 5.列表相关方法 本章内容详情 1.数据类型的内置方法简介 数据类型是用来记录事物状态的,而事物的状 ...

  2. python基础语法18 类的内置方法(魔法方法),单例模式

    类的内置方法(魔法方法): 凡是在类内部定义,以__开头__结尾的方法,都是类的内置方法,也称之为魔法方法. 类的内置方法,会在某种条件满足下自动触发. 内置方法如下: __new__: 在__ini ...

  3. python for循环while循环数据类型内置方法

    while 条件: 条件成立之后循环执行的子代码块 每次执行完循环体子代码之后都会重新判断条件是否成立 如果成立则继续执行子代码如果不成立则退出 break用于结束本层循环 ### 一:continu ...

  4. python基础操作以及其常用内置方法

    #可变类型: 值变了,但是id没有变,证明没有生成新的值而是在改变原值,原值是可变类型#不可变类型:值变了,id也跟着变,证明是生成了新的值而不是在改变原值,原值是不可变 # x=10# print( ...

  5. python基础-字符串(str)类型及内置方法

    字符串-str 用途:多用于记录描述性的内容 定义方法: # 可用'','''''',"","""""" 都可以用于定义 ...

  6. python循环与基本数据类型内置方法

    今天又是充满希望的一天呢 一.python循环 1.wuile与else连用 当while没有被关键'break'主动结束的情况下 正常结束循环体代码之后会执行else的子代码 "" ...

  7. python常用数据类型内置方法介绍

    熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 下面介绍了python常用的集中数据类型及其方法,点开源代码,其中对主要方法都进行了中文注释. 一.整型 a = 100 a.xx ...

  8. python中其他数据类型内置方法

    补充字符串数据类型内置方法 1.移除字符串首尾的指定字符可以选择方向1: s1 = '$$$jason$$$' print(s1.strip('$')) # jason print(s1.lstrip ...

  9. while.for循环和基本数据类型内置方法

    while循环补充说明 流程控制之for循环 基本数据类型内置方法 内容详细 1.死循环 真正的死循环是一旦执行,Cpu的功耗会急速上升 知道系统采取紧急措施 所以 尽量不要让cpu长时间不断运算. ...

随机推荐

  1. 改造@vue/cli项目为服务端渲染-ServerSideRender

    VUE SEO方案二 - SSR服务端渲染 在上一章中,我们分享了预渲染的方案来解决SEO问题,个人还是很中意此方案的,既简单又能解决大部分问题.但是也有着一定的缺陷,所以我们继续来看下一个方案--服 ...

  2. linux下的redis操作

    安装  .启动.连接 下载包:wget http://download.redis.io/releases/redis-4.0.8.tar.gz 解压 :tar -xzf redis-4.0.8.ta ...

  3. Python学习-Day1(Typora软件与计算机)

    学习总括 Typora软件介绍(markdown语法) 相关拓展知识 文件的后缀名是什么? 什么是语言? 什么是编程语言? 什么是编程?(程序员写代码的本质) 计算机的五大组成部分 计算机的本质 计算 ...

  4. PTA刷题笔记

    PTA刷题记录 仓库地址: https://github.com/Haorical/Code/tree/master/PTA/GPLT 两周之内刷完GPLT L2和L3的题,持续更新,包括AK代码,坑 ...

  5. opencv如何在jupyter notebook中显示图片

    方法一: from matplotlib import pyplot as plt import numpy as np import cv2 img = cv2.imread('img.jpg') ...

  6. [题解] [LOJ2743]「JOI Open 2016」摩天大楼

    题目大意 将 \(N\) 个互不相同的整数 \(A_1 , A_2 , ⋯ , A_N\) 任意排列成 \(B_1 , B_2 , ⋯ , B_N\) . 要求 \(∑^{N−1}_{i=1} |B_ ...

  7. JVM探究

    1.JVM探究 请你谈谈你对JVM的理解?java8虚拟机和之前的变化更新? 什么是OOM,什么是栈溢出StackOverFlowError?怎么分析? JVM的常用调优参数有哪些? 内存快照如何抓取 ...

  8. MAC 地址为什么不需要全球唯一

    MAC 地址(Media access control address)是分配给网络接口控制器(Network interface controller, NIC)的唯一标识符,它会在网络段中充当网络 ...

  9. Java安全之SnakeYaml反序列化分析

    Java安全之SnakeYaml反序列化分析 目录 Java安全之SnakeYaml反序列化分析 写在前面 SnakeYaml简介 SnakeYaml序列化与反序列化 常用方法 序列化 反序列化 Sn ...

  10. MPLS基础与工作原理

    MPLS Fundamental History of WAN Protocol 1970年代之前 第一个 WAN 用于将办公室与终端连接到大型机和小型计算机系统. 它是从办公室到数据中心的点对点连接 ...