交换两个列表的每第 N 个元素
Swap every Nth element of two lists
我有两个列表:
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
循环。
注意:两个列表的长度相同。
我们可以通过 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])
我有两个列表:
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
循环。
注意:两个列表的长度相同。
我们可以通过 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])