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

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

这是我的嵌套列表,我需要将其制作成点形式的列表:
- 第一层 - 第二层 A 点 - 第二层 B 点 - 第一层 C 点 - 第一层 D 点
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)

来自评论:这个问题缺乏展示你自己尝试解决它的任何代码。如果你已经尝试过一些东西,请向我们展示你尝试了什么,期望输出的示例以及你实际得到的结果。如果你还没有尝试过任何东西,在发布之前需要这样做。我们可以帮助您处理现有的代码,但我们不会为您编写代码。请阅读:如何创建一个最小、完整和可验证的示例 以及 如何提出一个好问题? - sɐunıɔןɐqɐp
2个回答

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]]])

你能把它简化成多行吗? - user12329471
@KvnPatel 我首先将每个子列表分成两个部分,然后转置它并再次分成两个部分,然后你就完成了,请同时点赞每个答案。 - U13-Forward

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接