列表,字典
列表
list
最具灵活性的有序集合对象类型
L = []
L = [0,1,2,3]
L = [0,1,2,[4,5,6]]
L[I]
L[I][J]
L[I:J]
L1+L2
L.append(4) # 插入单个元素
L.extend([5,6,7]) #插入一个列表,插入几个元素,列表会多几个元素
l.insert(1) #在偏移处插入
l.index(1) #首次出现的位置
l.count(x) #计数
l.sort() #排序与reverse合用,可以实现从大到小
l.reverse() #元素反转
del l[k]
del l[i:j]
l.pop() #删除某个位置
l.remove(2) #删除元素
l[i:j]=[] #重新赋值
l[i]=1 #重新赋值
l[i:j]=[4,5,6] #重新赋值
列表方法调用
l[0:3]=l[:3]
append与sort
L.append(‘please’)
L.sort() #递增 修改了列表
append与L+[]的区别
append是原地列表
+是生成新列表
l.sort(key=str.lower,reverse=True)
排序的key参数也很有用
以后内置函数sortef比sort方法更好用
深浅拷贝
s = ['abc','ABD']
s2 = s.copy()
print(s2)
s2[0] = 3
print(s2)
------------------
['abc', 'ABD']
[3, 'ABD']
修改字符串不影响原先的
s = [[2,3,4],'ABD',158]
s2 = s.copy()
print(s2)
s[0][0] = 3
print(s2)
print(s)
------------------
[[2, 3, 4], 'ABD', 158]
[[3, 3, 4], 'ABD', 158]
[[3, 3, 4], 'ABD', 158]
修改序列影响原来的
深拷贝=克隆
浅拷贝=只拷贝第一层
#不是深浅拷贝,注意
a = [[1,2],3,4]
b = a
b [1] = 123
print(b)
print(a)
---------------
[[1, 2], 123, 4]
[[1, 2], 123, 4]
集合set
所有python中所有不可改变的的对象(imutable objects)都是可哈希的,比如字符串,元组,也就是说可改变的容器如字典,列表不可哈希(unhashable)
set里的 元素一定是不可变的元素,元素是可哈希的,无序的不重复的,没有切片,索引,取值
取值可以通过 for ,in,not in 循环和迭代器
集合成员可以做字典的键
a = set('wang')
print(a)
-----------------
{'n', 'w', 'a', 'g'}
a = {'wang','lei'}
print(a,type(a))
--------------
{'lei', 'wang'} <class 'set'>
集合分类:可变集合,不可变集合
可变集合(set):可添加删除元素,非可哈希(set函数本身是非可哈希的),不能用作字典的键,也不能做其他集合的元素
不可变集合(frozenset):与上相反
s = ['wang',123]
a = set(s) #a是非可哈希
c = {a:'lei'} #报错
a = {'wang','lei'}
a.add('www') #add加入整体
print(a)
--------------
{'lei', 'www', 'wang'}
---------------------
a = {'wang','lei'}
a.update('abc') #update分散开,重复的只打印一个
print(a)
---------------
{'wang', 'lei', 'b', 'c', 'a'}
a = {'wang','lei'}
a.update([12,'eee']) #update加字典
print(a)
{'wang','lei',12,'eee'}
a.remove(12) #删除
a.pop() #随机删除
a.clear() #清空
集合类型操作符
1.in,not in
2.等价于不登等价
set('alex')==set('alexe')
#等价.左边四个元素的集合,右面也是4个元素的集合(不重复),不能有其他的元素
3.子集,超集
print(set('wang') < set('wanglei'))
4.并集(|),交集(&),差集(-),反向交集(^)
差集考虑两者前后顺序,反向交集是除了交集之外的
字典
键不可变
D = {} #空
D = {'ABC':2,265:'fd'}
D = {'ABC':{1:2},265:'fd'}
D = dict.fromkeys(['a','b'])
D = dict(zip(keyslist,valslist))
D = dict(name='bob',age=40)
D['dfe'] = 'fjd' #增加dfe键,fjd值
D[ABC][1] #键测试是否在字典
'fd' in D #关系测试
D.keys() #查看所有键
D.valus() #查看所有值
D.items() #所有项目以元组形式
D.copy() #复制
D.get(default) #输入键,返回值
D.update(d2) #合并键值对
D.pop(key) #删除键
len(D) #长度
D[key] = 42 #修改键
del D [key] #删除键
list(D.keys()) #用列表方式提取键
D1.keys()&D2.keys() #交集
Dictionary views (Python 3.0)
D = {x:x*2 for x in range(10)}