enumerate
它可以逐个返回序列的(i,vlue)元组,可以用于映射其所在位置的字典
#语法
for i, value in enumerate(collection):
#用value做一些事情
list1=['foo','too','foor']
for i,value in enumerate(list1):
print i,value
0 foo
1 too
2 foor
mapping_dict=dict((i,v) for i, v in enumerate(list1))
mapping_dict
{0: 'foo', 1: 'too', 2: 'foor'}
sort and set
list2=['we are the family!']
set(list2)
{' ', '!', 'a', 'e', 'f', 'h', 'i', 'l', 'm', 'r', 't', 'w', 'y'}
#只有直接把字符串放入这个set()中才有这个效果,如果写list2是一个list,不可以拆分
sorted(set('we are the family!'))
[' ', '!', 'a', 'e', 'f', 'h', 'i', 'l', 'm', 'r', 't', 'w', 'y']
zip
用于多个序列(列表、元组)中的元素“一一配对”,从而产生一个新的元组列表:
list3=['one','two','three']
list4=[True,False]
#说明最终得到的元组由最短的序列决定
zip(list1,list3,list4)
[('foo', 'one', True), ('too', 'two', False)]
#zip有一个常用的用法就是和enumerate一起使用:
for i,(a,b)in enumerate(zip(list1,list3)):
print i,a,b
0 foo one
1 too two
2 foor three
list5=zip(list1,list3,list4)
#unzip,解压
value1,value2,value3=zip(*list5)
print value1
#这里的*号,相当于:
#zip(seq[0],seq[1],seq[2],...,seq[len(seq)-1])
('foo', 'too')