2016-09-14 117 views
-2

的每一個第N個元素我有兩個名單爲:交換兩個列表

l1 = [1, 2, 3, 4, 5, 6] 
l2 = ['a', 'b', 'c', 'd', 'e', 'f'] 

我需要交換這些列表的每一個N個元素。例如,如果N=3,期望的結果是:

l1 = [1, 2, 'c', 4, 5, 'f'] 
l2 = ['a', 'b', 3, 'd', 'e', 6] 

我可以通過for循環和交換做它的每一個N個元素:

>>> for i in range(2,len(l1),3): 
...  l1[i], l2[i] = l2[i], l1[i] 
... 
>>> l1, l2 
([1, 2, 'c', 4, 5, 'f'], ['a', 'b', 3, 'd', 'e', 6]) 

我想知道是否有更有效的方式來實現這一目標。可能沒有for循環。

注意:兩個列表的長度都是相同的。

+0

我剛剛通過做它的想法。 'list slicing',我認爲這非常有效。不過,我很想知道是否有更好的方法。不刪除該問題,因爲它可能對別人有幫助。 –

回答

1

我們可以做到這一點通過list slicing爲:

>>> l1[2::3], l2[2::3] = l2[2::3], l1[2::3] 
>>> l1, l2 
([1, 2, 'c', 4, 5, 'f'], ['a', 'b', 3, 'd', 'e', 6])