制定一个嵌套列表,其中包含另一个嵌套列表中相同位置的元素 [duplicate]

Formulating a nested list comprising elements in the same position from another nested list [duplicate]

提问人:bjuksel 提问时间:6/27/2023 更新时间:6/27/2023 访问量:38

问:

这个问题在这里已经有答案了:
转置列表列表(14 个答案)
5个月前关闭。

如何获取嵌套列表并将其重新表述为新的嵌套列表,其中:

  • 新嵌套列表的第一个列表 B 包含嵌套列表 A 中所有列表的第一个元素。
  • 新嵌套列表的第二个列表 B 包含嵌套列表 A 中所有列表的第二个元素。
  • 新嵌套列表的第 n 个列表 B 包含嵌套列表 A 中所有列表的第 n 个元素。

例如:

A = [[100,200,300], [400,500,600], [1000,1500,300]]

使 B 变为:

B = [[100,400,1000], [200,500,1500], [300,600,300]]

当然,在现实中,A 包含数百个列表,而不仅仅是三个。所以我需要一种方法来自动处理大量列表。

python list 套循环 嵌套列表

评论

0赞 richard 6/27/2023
如果内部列表的长度相等,则 。B = list(zip(*(a for a in A)))
2赞 slothrop 6/27/2023
或者只是也会起作用。或者,但我知道有些人不喜欢.B = list(zip(*A))B = [*zip(*A)][* ]

答:

1赞 Maria K 6/27/2023 #1

如果您确定所有内部列表的长度相同,则

B = [[inner_list[i] for inner_list in A] for i in range(len(A))]

否则,您还可以检查索引 i 是否超出当前内部列表的边界:

B = [
    [inner_list[i] if i < len(inner_list) else None for inner_list in A]
    for i in range(len(A))
]