enumerate函数
# 逐个返回序列的(i,value)值 some_list = ['foo', 'bar', 'baz'] for i, value in enumerate(some_list): print(i, value) #还可以映射成字典的位置 mapping = dict((v, i) for i, v in enumerate(some_list)) print(mapping)结果
0 foo1 bar2 baz{'foo': 0, 'bar': 1, 'baz': 2}
sorted函数
可以将任何序列返回为一个新的有序列表
zip函数
可以将多个序列(列表、元组等)中的元素‘配对’
seq1 = [4, 5, 6] seq2 = [1, 2, 3] seq3 = zip(seq1, seq2) seq3 = list(seq3) print(seq3)这里是Python3的写法,如果是python 2 的写法,结果就会是这样<zip object at 0x000001A06E882188>
Reversed函数
a = list(reversed(range(10))) print(a)字典 empty_dict = {} d1 = {'a': 'somevalue', 'b': [1, 2, 3, 4]} print(d1) #插入一个字典元素 d1[7] = 'an integer' print(d1) #判断字典中是否存在某个键 print('b' in d1) #del删除键值对应的value,pop删除指定值后会返回一个值 d1[5] = 'some value' d1['dummy'] = 'another value' print(d1) del d1[5] print(d1) ret = d1.pop('dummy') print(ret) #keys()和values()可以用来获取键和值的列表,但是python 得到的是迭代器 print(d1.keys()) print(d1.values()) #update d1.update({'b': 'foo', 'c': '12'}) print(d1)set集和
两种创建方式
a = set([1, 2, 3, 3, 2]) b = {1, 2, 3, 4, 3} print(a) print(b) a = {1, 2, 3, 4, 5} b = {3, 4, 5, 6, 7, 8} huo = a | b yu = a & b cha = a - b yihuo = a ^ b print(huo) print(yu) print(cha) print(yihuo)结果
{1, 2, 3, 4, 5, 6, 7, 8}{3, 4, 5}{1, 2}{1, 2, 6, 7, 8}
列表推导式
[expr for val in collection if condition]
相当于下面这段for循环
result = [] for val in collection: if condition: result.append(expr)举例如下
strings = ['a', 'as', 'bat', 'car', 'dove'] str1 = [x.upper() for x in strings if len(x) >2] print(str1)嵌套列表推导式
求出带有两个‘e’的名字
all_data = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'joe'], ['Susie', 'Casey', 'Jill', 'Ana', 'Eva', 'Jennifer', 'Stephanie']] names_of_interest = [] for names in all_data: enough_es = [name for name in names if name.count('e') == 2] names_of_interest.extend(enough_es) print(names_of_interest)结果:
['Jefferson', 'Wesley', 'Steven', 'Jennifer', 'Stephanie']
改成如下的嵌套列表推导式
result = [name for names in all_data for name in names if name.count('e') == 2] print(result)