不要手贱在遍历一个集合的时候修改它,如果有操作,新建一个临时变量接盘就好了
1.del
a=range(0,2)
del a[1]
#最后a是[0]
2. filter()
过滤一个list
def f(x): return x % 3 == 0 or x % 5 == 0
filter(f, range(2, 25))
#[3, 5, 6, 9, 10, 12, 15, 18, 20, 21, 24]
3.map()
遍历list,分别对元素进行处理
map(lambda x:x**2,range(0,8))
#[0, 1, 4, 9, 16, 25, 36, 49]
如果两个list,长度一样,还可以匹配操作,这个很实用
map(lambda x,y:x**2+y,range(0,8),range(0,8))
[0, 2, 6, 12, 20, 30, 42, 56]
4.reduce()
累加操作把一个list,从开始前两个进行运算,然后运算结果作为参数,取出list接下来一个,组成两个运算数,继续进行,叠加操作
reduce(lambda x,y:x+y,range(0,8))
#28
5.元组tuples
不可变的list,嗯,一般是需要一个固定大小,内容可知的list。显式声明
使用场景上,和list相比,tuples更倾向于做一个上层包袱,可以放不同类型的元素。而list更倾向于做一个传统的可变数组
t=1,2,3
#等同与t=(1,2,3)
x, y, z = t
#x,y,z分别等于1,2,3
5.无序集合set
set()其实也是一个内置去重方法,比如set([1,1,2,3,4,4])
得到了set(1,2,3,4)。需要显式声明的时候,可以a=set(),或者a={}
a = {x for x in 'abracadabra' if x not in 'abc'}
#set(['r', 'd'])
6.xrange(start,end,step)
步进序列
xrange(0,10,2)
#0,2,4,6,8
7. reversed()
反转序列
reversed(range(0,3))
2,1,0
8.zip(q,b)
并行遍历
questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']
for q, a in zip(questions, answers):
print 'What is your {0}? It is {1}.'.format(q, a)
What is your name? It is lancelot.
What is your quest? It is the holy grail.
What is your favorite color? It is blue.
9. enumerate
遍历list的时候,获得坐标和元素值
for i, v in enumerate(['tic', 'tac', 'toe']):
print i, v
0 tic
1 tac
2 toe
10.sorted
给一个list去重之后,继续保留顺序
basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
for f in sorted(set(basket)):
print f
11.iteritems()
遍历一个map的k,v
knights = {'gallahad': 'the pure', 'robin': 'the brave'}
for k, v in knights.iteritems():
print k, v
gallahad the pure
robin the brave
以上内容翻译整理自https://docs.python.org/2/tutorial/datastructures.html#