Python代码: list转为一组tuple的方法
01 #From 半瓶墨水: 不是很容易懂的for
02 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
03 length = len(a)
04 b = [(a[i], a[i+1], a[i+2]) for i in range(0, length) if i % 3 == 0]
05 print b
06
07 #From 3751( http://wmlin.ycool.com/ )
08 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
09 length = len(a)
10 b = [(a[i], a[i+1], a[i+2]) for i in range(0, length, 3)]
11 print b
12
13 #讨论帖:http://groups.google.com/group/python-cn/browse_thread/thread/1143a09fadb76c02#
14 #from Leo #1:
15 def group(seq, size):
16 if not hasattr(seq, 'next'):
17 seq = iter(seq)
18 while True:
19 yield [seq.next() for i in xrange(size)]
20
21 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
22 for i, j, k in group(a, 3):
23 print i, j, k
24
25 #From Leo #2:
26 #要是不想另写一个函数的话,也可以这样:
27 a = range(12)
28 for i, j, k in zip(a[::3], a[1::3], a[2::3]):
29 print i, j, k
30
31 #From Leo #3:
32 #兼顾速度与灵活性的版本出炉:
33 s2 = '''for i, j, k in group(a, 3): pass'''
34
35 s2setup = '''
36 from itertools import izip, chain
37 def group(seq, size):
38 return izip(*[chain(seq)]*size)
39
40 a = range(300)
41 '''
42
43 #话说,我最喜欢Leo#2,完全符合我的要求:简洁高效易读懂