gpt4 book ai didi

python - 将嵌套列表更改为多个单个列表

转载 作者:行者123 更新时间:2023-12-04 00:18:39 26 4
gpt4 key购买 nike

如果我有一个 list :

[[ A, B, C ], 10, [ 1, 2, 3 ], F]

将其更改为的最佳方法是什么:
[ A, 10, 1, F]
[ B, 10, 2, F]
[ C, 10, 3, F]

嵌套列表的长度一致: len(list[0]) == len(list[2]) , 但是 len(list[0])可能是 3, 2, 4 , 等等。

最佳答案

让我们试试 itertools这里:

from itertools import cycle

list(zip(*(iter(x) if isinstance(x, list) else cycle([x]) for x in l)))
# [('A', 10, 1, 'F'), ('B', 10, 2, 'F'), ('C', 10, 3, 'F')]

请注意,如果子列表大小不等,这不会出错 - 输出的大小等于最短子列表的大小。

这个怎么运作

遍历列表,如果项目是列表,则使用 iter 将其转换为迭代器, 否则如果标量将其转换为循环迭代器(无限重复单个值)并将它们压缩在一起并列出。

步骤 0
 A     10    1      F
B 2
C 3
l[0] l[1] l[2] l[3]

第1步
(iter(x) if isinstance(x, list) else cycle([x]) for x in l)

A 10 1 F
B 10 2 F
C 10 3 F
l[0] l[1] l[2] l[3]

第2步
list(zip(*_))
[('A', 10, 1, 'F'), ('B', 10, 2, 'F'), ('C', 10, 3, 'F')]

关于python - 将嵌套列表更改为多个单个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62337372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com