2014-03-30 36 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