2014-03-30 33 views
0

我有一个列表a = [1,2,3,4,5,6,7,8,9,10,11,12],我想从每4个元素中重复获得前2个元素。所以结果会是这样的:从主列表中递归提取子列表

b1 = [1,2] 
b2 = [5,6] 
b3 = [9,10] 

我试图c = [a[x:x+4] for x in range(0,len(a),4)]但只给[1,2]。 如何使其递归?

回答

2
[a[i] for i in xrange(0, len(a)) if i % 4 < 2 ] 
# [1, 2, 5, 6, 9, 10] 

如果你想使一个数组的数组,使用

[[a[i], a[i + 1]] for i in xrange(0, len(a)) if i % 4 == 0] 
# [[1, 2], [5, 6], [9, 10]] 

如果想结果分配到三个变量,使用

b1, b2, b3 = [[a[i], a[i + 1]] for i in xrange(0, len(a)) if i % 4 == 0] 
# b1 = [1, 2], b2 = [5, 6], b3 = [9, 10] 
+0

感谢。还有一件事,如果我想得到'[3,4,7,8,11,12]'? – Ibe

+0

在第一个和第三个中更改'< 2' to '> = 2','i%4 == 0'更改为'i%4 == 2'。 –

+0

非常感谢。 – Ibe