一. 列表
1.1 列表的表达
序列类型:
内部元素有位置关系,可以通过位置序号访问元素
列表内可以有多种类型元素,支持增删改查
list(可迭代对象)可以产生列表
可迭代对象:字符串 元组 集合 range()
字符串转列表
s = 'hello world'
list(s) #
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
元组转列表:
tp = (1,2,3)
list(tp) # [1, 2, 3]
range(起始,终止,数字间隔)转列表
type(range(6))
list(range(1,12,2))
其实数字缺省,默认为0
必须包含终止数字
数字间隔缺省,默认为1
1.2 列表的性质
列表长度len(list)
:
列表的索引–与同为序列类型的字符串完全相同
变量名[位置编号]
正向索引从0开始
反向索引从-1开始
列表的切片:变量名[开始:结束:切片间隔]
:
1.3 列表的操作符
list1+list2实现列表拼接:
n*list或list*n实现列表的成倍复制
1.4 列表的操作方法
1.4.1 增加元素
list.append(ele)
:
在末尾增加元素
list.insert(i,ele)
list.extend(list2)
:
将列表打散成元素再加入
1.4.2 删除元素
list.pop(i)
:
删除列表i位置的元素
不写位置信息,默认删除最后一个
list.remove(ele)
:
1.4.3 查找元素
list.index(ele)
:
列表中第一次出现待查元素的位置
1.4.4 修改元素
list[i] = ele
:
先索引后修改
1.4.5 列表的复制
1.4.5.1 浅拷贝
方法一
list.copy()
:
将第一层的元素复制一遍
方法二
list[:]
:
效果同方法一
1.4.6 列表的排序
list.sort()
:
对列表进行永久排序,是直接在列表上操作,无返回
list.sort(reverse=True)
:
递减排序
sorted(list)
:
对列表进行临时排序,返回排序后的列表,原列表保持不变
1.4.7 列表的翻转
list.reverse()
:
对列表进行永久翻转,直接在列表上操作,无返回值
1.4.8 for循环对列表进行遍历
1.4.9 其它
any(list)#是否至少有一个元素为真
all(list)#是否所有的元素为真
#使用列表推导式可以快速得到一个列表
[i for i in range(5) if i%2==0]
x = (1,2,3,4,5)
a,*b = x
#x的第一个元素给a,剩余元素打包给b
a,*b,c = x
二. 元组
2.1 元组的表达
元组可以看作不可变的数组;
一旦定义,内部元素不支持
2.2 元组的操作
不支持元素添加,删除,修改操作
其余操作与列表一致
2.3 元组的常见用法
2.3.1 打包与解包
def fun1(x):
return x*2,x**2
fun1(3)
a,b = fun1(3) # 解包操作
zip(list/tuple,list/tuple)
将同一索引下的元素形成一个元组,返回zip类型
可以用for进行迭代,然后解包
三. 字典
3.1 字典的表达
字典通过键-值的映射实现数据存储和查找
常规的字典是无序的
3.2 字典的要求
3.2.1 字典的键不能重复
3.2.2 字典的键必须是不可变类型
d1 = dict(name='Tom',age=18,height=180)
d2 = dict([('name','Tom'),('age',18),('height',180)])
d3 = dict(zip(['name','age','height'],['Tom',18,180]))
不可变:数字 字符串 元组
可变 列表 字典 集合
3.3 字典的性质
len(dict)
:
字典的长度
dict[key]
:
通过字典[键]形式获取对应的值
3.4 字典的操作方法
3.4.1 增加键值对
dict[key] = 新值
3.4.2 删除键值对
del dict[key]
dict.pop(key)
dict.popitem()
dict.clear()
随机删除一个键值对,并以元组返回该键值对
3.4.3 修改值
dict[key]
通过先索引后赋值的方式对相应值进行修改
获取值
dict.get(key,default)
:
从字典获取key对应的值,如果没有这个key,返回default
dict.keys() dict.values()
:
获取keys和values集;分别为dict_keys,dict_values类型
dict.items()
:
将键值对以元组形式打包出来ditc_items类型
3.5 其它
d1.setdefault('a',3) #插入一个键并指定值
d1.update(dict) #将字典dict的键值对添加到d1中
d1.copy()#浅拷贝
any(d1)#是否有一个键为True
all(d1)#是否所有键为True
sorted(d1)#所有的键组成的列表进行排序
dict1 = dict{}#注意{}是创建空集合
四. 集合
4.1 集合的表达
集合内元素互不相等,且无序
集合元素必须是不可变类型:数字,字符串或者元组
4.2 集合的运算
&
:返回集合的交
|
:返回集合的并
^
:返回集合中的非共同元素
s1-s2
:返回在集合s1中但不在s2中的元素
4.3 集合的操作方法
s.add(ele)
s.update([1,2,3])
s.remove(ele)#删除不存在会报错
s.discard(ele)#删除不存在不会报错
s.clear()
#数学运算
s1 & s2 #交集
s1.intersection(s2) #交集
s1|s2 #并集
s1.union(s2) #并集
s1.difference(s2) #差集
s1.difference_update(s2) #差集 会覆盖s1
s1.symmetric_difference(s2) #求交集之外
s1.symmetric_difference_update(s2) #求交集之外,会覆盖s1
s1.isdisjoint(s2) #是否没有交集
s1.issubset(s2) #s1是不是s2的子集
s1.issuperset(s2) #s1是不是s2的超集,就是s1是否包含s2全部元素
$\color{#FF0000}{占楼}$
奥利给