串联数字列表的最佳方法? [关闭]

问题描述 投票:-2回答:5

示例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]]

我想以适当的方式连接两个列表

python python-3.x list numpy-ndarray
5个回答
0
投票

您应该说您希望元素的顺序由原始列表中的位置确定。一个简单的理解现在不会做,我们需要一些可以跟踪索引的东西

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) 

0
投票

顺序不会像您在示例中显示的那样,但是它似乎是最简单的方法。

list(a + b for a, b in zip(list1, list2))

0
投票

您可以在这里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]]

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))]
© www.soinside.com 2019 - 2024. All rights reserved.