一 汇总
数据类型 | list(列表) | tuple(元组) | dict(字典) | set(集合) | 特点 | 有序 | 有序 元素不可改变 运行商tuple的性能是list的数倍 | 无序 key必须是不可变的类型 tuple可以作为key value可以是任意类型的元素,可以是list、tuple等 | 无序 元素不重复 集合以大括号开始和结束。 | 定义 | L=[] L=[1,2,3] T = ('Alice', 'Bob')
L = list(T) | T=()
T=(1,)
T = ('Alice', 'Bob', 'Candy')
T=(1,'CH',[3,4])
L = ['Alice', 'Bob', 'Candy']
T = tuple(L) | d=dict() d = { 'Alice': 45, 'Bob': 60 } | set() set(['Jenny', 'Ellena']) a={1,2,3} setaa=set('aaabbc') #可以向set函数传递任意序列快速生成一个集合。 | 访问元素 | for item in L:
print(item) L[0]
L[-1]
L[1:]
L[:3] | T[0] # 切片
print(T[1:3]) | key不存在时,会报错
d['Bob'] key不存在时,返回None
d.get('Alice')
dict.get(key,default=None)key在dict中返回对应的值,否则返回default的值 | | 判断是否存在 | a in L | a in T | if 'Alice' in d: | Alice' in name_set | 添加元素 | 追加到末尾: L.append('Candy') | 不能添加数据 | d['Mimi'] = 72 | 一次添加一个 name_set.add('Gina') | 插入到指定位置: L.insert(2, 'Candy') | | value可以是任意类型的元素: d['Mimi'] = [72, 73] | 一次添加多个 new_names = ['Hally', 'Isen', 'Jenny', 'Karl'] name_set.update(new_names) | extend([x,x]) \\列表末尾增加数据项集合 | | | | 删除元素 | 删除最后一个/指定位置元素,并返回: name = L.pop()
print(name) # ==> Ellena
name = L.pop(2)
| | 删除指定key及其对应的value,并返回value:
d.pop('Alice') | remove 删除不存在元素会报错 name_set.remove('Jenny') discard name_set.discard('Jenny') | 修改元素 | L[2] = 'Canlina' | | d['Bob'] = 75 | | 清除所有元素 | L.clear() | | d.clear() | name_set.clear() | 其他 | | count()统计某个元素出现的次数: T.count('Alice') | 返回dict的所有key: L=d.keys() | 判断是否子集和超集 s1 = set([1, 2, 3, 4, 5]) s2 = set([1, 2, 3, 4, 5, 6, 7, 8, 9]) # 判断s1是否为s2的子集 s1.issubset(s2) # ==> True # 判断s2是否为s1的超集 s2.issuperset(s1) # ==> True | remove(x) \\ 删除一个特定的数据项x,未找到时会报错 | index()返回指定元素的下标: T.index('Alice') | 遍历dict: for key in d: # 遍历d的key
value = d[key] | 判断集合是否有重合 有重合,返回False s1.isdisjoint(s2) | isinstance(x,list) \\ 检查某个特定标识符是否包含某个特定类型的数据 dir(__builtins__) \\ 查看Python提供的内置方法列表 help(input) \\ 查看BIF能做什么 | | items() 方法会返回dict中所有的元素,每个元素包含key和value: for key, value in d.items():
if value > 60:
print(key, value) | 返回两个集合中都包含的元素 s1.intersection(s2 | 切片[::-1]是将列表或字符倒过来 | | 获取dict的所有value: for v in d.values():
print(v) | |
二 列表
列表操作
合并两个列表
>>> [1,2,3,4]+[2,3]
[1, 2, 3, 4, 2, 3]
乘法(列表元素重复):
>>> [2,3]*2
[2, 3, 2, 3]
将列表转换为一个字符串
''.join(lista)
new_phase=new_phase+''.join([phare[5],phare[4],phare[7],phare[6]]) #可以join一个列表
列表赋值
a=[1,2,3]
b=a
c=a.copy()
列表推导
将一个列表转换为一个新列表
new_list=[fun(item) for item in old_list] # fun是所使用的函数
mins=[1,2,3]
secs=[m*60 for m in mins]
三 元组
元组是不可变的列表,因此可以跟列表一样进行切片,结果仍是元组
合并两个元组,乘法:
>>> (1,2,3)+(4,5,6)
(1, 2, 3, 4, 5, 6)
>>> (1,2)*2
(1, 2, 1, 2)
类型转换
元组数据类型可以把不是元组的容器转换为元组,比如将列表转换成元组。
L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
print(L) # ==> ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
T = tuple(L)
print(T) # ==> ('Alice', 'Bob', 'Candy', 'David', 'Ellena')
L = list(T)
可以以这种方式定义元组:
(sarah_name,sarah_birth)=sarah.pop(0),sarah.pop(0)
#sarah是个list
元组只包含一个对象时,也要带个逗号。
四 序列
str list tuple都是序列
字符串和元组均是不可变类型。
共同的操作:
通过索引访问
>>> 'hello world'[2]
'l'
>>> [1,2,3][2]
3
切片
>>> 'hello world'[0:2]
'he'
>>> [1,2,3][0:2]
[1, 2]
>>> 'hello world'[::-1]
'dlrow olleh'
加法和乘法
两个列表/元组/字符串相加;列表/元组/字符串乘以一个数字。
>>> 'abc'+'de'
'abcde'
>>> 'ab'*2
'abab'
in操作符
>>> 'h' in 'hello world'
True
>>> 3 in [1,2,3]
True
>>> 3 not in [1,2,3]
False
元素个数/字符串长度len()
>>> len([1,2,3])
3
>>> len('ab')
2
>>> len((2,3))
2
max()min()求最大/小值
>>> max('ab')
'b'
>>> max((1,2,3))
3
>>> max([5,4])
5
>>> min('acefg')
'a'
>>> min((2,0))
0
>>> min([4,5])
4
五 集合
集合操作
len() 求长度
in / not in 判断元素是否在/不在集合内
>>> len({1,2,3})
3
>>> 2 in {1,2,3}
True
>>> 1 not in {1,2,3}
False
union/|合并集合
>>> a={'a','c'}
>>> b='ab'
>>> a.union(set(b))
{'a', 'b', 'c'}
>>> {1,2,3,4,5,6} | {3,4,7}
{1, 2, 3, 4, 5, 6, 7}
difference/-求差集
包含在a中但不在b中的对象。
>>> a.difference(set(b))
{'c'}
>>> {1,2,3,4,5,6}-{3,4}
{1, 2, 5, 6}
intersection/&求交集
>>> a.intersection(set(b))
{'a'}
>>> {1,2,3,4,5,6} & {3,4}
{3, 4}
六 字典
遍历字典
for key in d: # 遍历d的key
value = d[key]
print(key, value)
for key, value in d.items():
print(key, value)
#items()方法会返回一个键值对列表
字典可以对键进行排序。
sorted(dictName) 只能用sorted
初始化setdefault
字典使用前确保初始化:
if i in found:
found[i]+=1
else:
found[i]=1
逆置条件缩短上方代码:
if i not in found:
found[i]=0
found[i]+=1
上方两行代码又可以替换为:
found.setdefault(i,0) #初始化(如果需要)
found[i]+=1
setdefault()方法允许我们在运行时动态扩展一个字典,而不用提前初始化字典中的所有数据行
|