示例1
list1 = [[1,1,1],[1,1,1]]
list2 = [[0,0,0],[0,0,0]]
concated_list1_and_list2 = [[1,0,1,0,1,0],[0,1,0,1,0,1]]
示例2
list1 = [[1,1,1],[1,1,1],[1,1,1]]
list2 = [[0,0,0],[0,0,0],[0,0,0]]
concated_list1_and_list2 = [[1,0,1,0,1,0],[0,1,0,1,0,1],[1,0,1,0,1,0]]
示例3
list1 = [[1,1,1],[1,1,1],[1,1,1],[1,1,1]]
list2 = [[0,0,0],[0,0,0],[0,0,0],[0,0,0]]
concated_list1_and_list2 = [[1,0,1,0,1,0],[0,1,0,1,0,1],[1,0,1,0,1,0],[0,1,0,1,0,1]]
我想以适当的方式连接两个列表
您应该说您希望元素的顺序由原始列表中的位置确定。一个简单的理解现在不会做,我们需要一些可以跟踪索引的东西
final_result = []
for index, (item1, item2) in enumerate(zip(list1, list2)):
temp = []
current_lists = zip(item1, item2) if index%2==0 else zip(item2, item1)
[temp.append(element1), temp.append(element2) for element1, element2 in current_lists]
final_result.append(temp)
顺序不会像您在示例中显示的那样,但是它似乎是最简单的方法。
list(a + b for a, b in zip(list1, list2))
您可以在这里zip
。
list1 = [[1,1,1],[1,1,1]]
list2 = [[0,0,0],[0,0,0]]
[[j for t in zip(*i) for j in t] for i in zip(list1,list2)]
# [[1, 0, 1, 0, 1, 0], [1, 0, 1, 0, 1, 0]]
与示例具有相同的输出:
def merge(list1, list2):
result = []
for index, (item1, item2) in enumerate(zip(list1, list2)):
item = []
for subitem1, subitem2 in zip(item1, item2):
if index % 2 == 0:
item.append(subitem1)
item.append(subitem2)
else:
item.append(subitem2)
item.append(subitem1)
result.append(item)
return result
或具有列表理解功能,可读性差(基于Ch3steR的答案):
[[j for t in zip(*i) for j in t] if idx % 2 == 0 else [j for t in zip(*i) for j in reversed(t)] for idx, i in enumerate(zip(list1,list2))]