python课堂4 列表,元组,字典,集合

列表:
创建:
l = list(iterable) l=[]
查询:
查询数据:列表名称后使用中括号加上数字就可以查询列表中的元素。l[2]
查询下标:l.index(value)
查询元素个数:l.count(value)
切片:
切片就是取出列表中的一部分,l[1:3] 取1和2,顾头不顾尾。l[:3] 0,1,2 l[3:] 3~最后。l[::2] 指定步长为2

增加:
l.append('@')#末尾添加
l.insert(3,'#')#指定位置插入
l.extend((1,2,3,213,))#拼接列表
l+[1,2,3,4] #拼接列表也可以直接使用+号
修改:
l[2] = 3
删除:
def l[3]
print(l.pop(3))#可以指定位置删除,默认删最后一个,并把删除值返回。只能指定位置,不能指定元素
l.remove(5)#可以指定元素,不能指定位置,没有默认删
l.clear()#清空列表
循环:
for i in l:
print(i)
排序:
l.reverse()#让列表元素反向排列
l.sort()#对列表元素排序,从小到大
深浅copy:
首先看变量
name = 'qianlei'
name1 = name
name = 'QL'
print(name,name1) ----->'QL qianlei'
变量本身不是容器,变量只是指向存储内容的内存,变量没有权限改变内存,改变量内容其实是开辟新的内存,让变量从新指向该内存。

lis = [1,2,3,['a','b','c']]
lis1 = lis
lis[0] = 4
print(lis,lis1)--->[4,2,3,['a','b','c']]

list列表本身是一块内存,列表的内存指向,列表中的元素所在的内存。变量指向列表,列表指向列表中的每一个元素,所以当列表中的一个元素改变了,所有的列表的变量看起来都变了。
浅copy: lis .copy(),只能复制列表第一层,第二层的(字列表)的数据仍然是相同的。(目的是节省内存)
深copy :需要导入copy模块
import copy
lis = [1,2,3,['a','b','c']]
lis1 = lis.copy() #浅copy
lis2 = copy.deepcopy(lis)#深copy
lis[3][0]='d'
print(lis,lis1,lis2)

元组:
tuple :不可以修改的列表。
tup.index() 查找指定元素的下标
tup.count() 查询指定元素个数

字典:
#增删改查
dic = {'qianlei':'shuaige',
'abc':123,
'zhangsan':{"name":"zhangsan","age":23,"sex":"female"}}

#增加:
dic['新K'] = 'value'
dic.update({'abc':"qwe","aaa":123})#合并字典,dic1中和dic相同的,覆盖dic的key.
print(dic)
a = dic.fromkeys(['abc','sad','qqq'],'key')#快速生成字典,可以设置默认key
print(a)
print(dic.setdefault('zhangsan',123))#如果没有则设定一个key和value,如果有则不设,返回value
#删除:
dic.pop('qianlei')#指定key删除,并返回value
print(dic)
print(dic.popitem()) #随机删除一项
del dic['zhangsan']
dic.clear()#清空
#修改
dic['qianlei'] = 'shuaige'
#查看
print(dic.get('zhangsan'))#获取对应的value
print(dic.items())#字典中项目,组成列表
print(dic.keys())#字典中key,组成列表
print(dic.values())#字典中value,组成列表
#复制
dic1 = dic.copy()#复制字典,浅复制
#循环
for k in dic:
print(k)
for v in dic.values():
print(v)
for k,v in dic.items():
print(k,v)

集合:set()
增删改查
se.copy() #复制
增:
se.add() #集合中添加元素,必须添加可hash的元素,不可更改元素。

删:
se.clear()#清空集合
se.discard(20) #删除指定元素,删除不存在的值,不报错,不做任何事情。
se.pop() #删除随机元素,集合没有顺序。返回被删除元素
se.remove() #删除指定元素。

改:
交集:
se.intersection(se1) #取交集,
print(se&se1) #同上
se.intersection_update(se1) #保留交集,升级se,保留和se1中相同的值。
差集:
se.difference(se1) #se中有se1中没有的值。
se-se1 #同上
se.difference_update(se1) #升级se,保留和se1中不同的值。
对称差集:
print(se.symmetric_difference(se1)) #对称差集,两个集合互相不同的元素,组成的新的集合
se.symmetric_difference_update(se1) #升级se,包含两个集合中互相不同的元素。

并集
se.update(se1) #合并集合
se.union(se1) #合并集合
se|se1 #合并集合

查:
print(se.isdisjoint(se2)) #检查是否不相交
print(se3.issubset(se1)) #检查是否为子集
print(se.issuperset(se3)) #检查是否为父集

猜你喜欢

转载自www.cnblogs.com/qianduoduo123/p/9223150.html