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 foo
1 bar
2 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)