一:一些简单的操作
列表切片
a=[1,2,3,4,5,6,7,8]
a[1:]
[2, 3, 4, 5, 6, 7, 8]
a[::-1]
[8, 7, 6, 5, 4, 3, 2, 1]
a[2:4]
[3, 4]
a[::-2]
[8, 6, 4, 2]
a[-3:-1]
[6, 7]
列表生成
x=[x**2 for x in a]
[1, 4, 9, 16, 25, 36, 49, 64]
字典生成
b={'q':1,'w':2,'e':3}
{'e': 3, 'q': 1, 'w': 2}
c={k:(v+1) for k,v in b.items()}
{'e': 4, 'q': 2, 'w': 3}
注意,b.items()的方法是把字典中所有的元素以列表的形式展现出来,用b.keys(),b.values()一样
如果在判断一个key是否在字典,应使用如下
if x in dic:
pass
时间复杂度为1
但是若采用
if x in dic.keys():
pass
时间复杂度会变成n
我在这里有很深感触。
map函数的简单使用。
a=[1, 2, 3, 4, 5, 6, 7, 8]
b=list(map(str,a))
['1', '2', '3', '4', '5', '6', '7', '8']
map和lambda的简单使用
c=list(map(lambda x : x+2 , a))
[3, 4, 5, 6, 7, 8, 9, 10]
再配合filter使用
c=list(map(lambda x : x+2 , filter(lambda x : x % 3 == 0,a)))
[5, 8]
二,一些高级特性
1.enumerate函数的使用
enumerate可以把各种迭代器包装为生成器,以便稍后产生输出值,生成器每产生一对输出值,其中,前者表示循环下标,后者表示从迭代器中获取的下一个序列元素。
举例如下
a=['qwqw','dota','lol','dnf','bibi']
for k,v in enumerate(a):
print(k,v)
0 qwqw
1 dota
2 lol
3 dnf
4 bibi
2.zip函数的使用
python3中的zip函数,可以把两个或者两个以上的迭代器封装为生成器,以便以后求值。这种zip生成器,会从每个迭代器中获取该迭代器的下一个值,然后把这些值汇聚成元组,与通过下标来访问多份列表的那种写法相比,这种zip写出来的代码更加清晰。如果遇到的输入的迭代器的长度不同,那么只要有一个迭代器耗尽,zip就会停止工作。
简单举例如下
a=['zhang','li','zhao']
b=['haha','yaya','wawa','wuwu']
for k,v in zip(a,b):
print(k,v)
zhang haha
li yaya
zhao wawa