如何将一个嵌套的int列表拆分为一个列表

时间:2019-11-06 02:21:34

标签: python

lst = [[1, 5],  
       [2, 2]

这是我的嵌套列表,我需要列出其中的要点:

output = [[1, 5, 2, 2]

这是我的尝试,适用于这种情况,但是如果我有一个行长度为6或大于4的示例,则失败

new_lst = []

for x in range(len(lst)):
    for y in range(0, len(lst[x]), 2):
        new_lst.append([lst[x][y],lst[x][y+1]])

counter_a = 0
counter_b = 1
output = []

while counter_b - 4 <= len(lst):
    output.append(new_lst[counter_a] + new_lst[counter_a + 2])
    output.append(new_lst[counter_b] + new_lst[counter_b + 2])
    counter_a += 4
    counter_b += 4

print(output)

2 个答案:

答案 0 :(得分:0)

尝试使用:

print([x for i in list(zip(*[[i[:2], i[2:]] for i in lst])) for x in [i[0] + i[1], i[2] + i[3]]])

答案 1 :(得分:0)

这个怎么样?这对于大小为nxm的所有列表都是通用的,其中n和m是偶数。逻辑是在行和列中都以2进行迭代,然后取2x2元素块并将其附加到输出列表中。

lst = [[1, 6, 5, 6],  
       [2, 5, 6, 8],  
       [7, 2, 8, 1],  
       [4, 4, 7, 3]]
output = []

for j in range(0, len(lst), 2):
     for i in range(0, len(lst[0]), 2):
         output.append([lst[j][i], lst[j][i+1], lst[j+1][i], lst[j+1][i+1]])

output : [[1, 6, 2, 5], [5, 6, 6, 8], [7, 2, 4, 4], [8, 1, 7, 3]]