gpt4 book ai didi

Python列表转置和填充

转载 作者:太空狗 更新时间:2023-10-29 18:29:06 25 4
gpt4 key购买 nike

我有一个列表列表,每个内部列表的长度要么是 1 要么是 n(假设 n > 1)。

>>> uneven = [[1], [47, 17, 2, 3], [3], [12, 5, 75, 33]]

我想转置列表,而不是截断较长的列表(如 zip)或用 None 填充较短的列表,我想填充较短的列表列出了自己的奇异值。换句话说,我想得到:

>>> [(1, 47, 3, 12), (1, 17, 3, 5), (1, 2, 3, 75), (1, 3, 3, 33)]

我可以通过几次迭代来做到这一点:

>>> maxlist = len(max(*uneven, key=len))
>>> maxlist
4
>>> from itertools import repeat
>>> uneven2 = [x if len(x) == maxlist else repeat(x[0], maxlist) for x in uneven]
>>> uneven2
[[1, 1, 1, 1], [47, 17, 2, 3], [3, 3, 3, 3], [12, 5, 75, 33]]
>>> zip(*uneven2)
[(1, 47, 3, 12), (1, 17, 3, 5), (1, 2, 3, 75), (1, 3, 3, 33)]

但是有更好的方法吗?我真的需要提前知道 maxlist 才能完成此任务吗?

最佳答案

你可以永远重复一个元素列表:

uneven = [[1], [47, 17, 2, 3], [3], [12, 5, 75, 33]]

from itertools import repeat

print zip(*(repeat(*x) if len(x)==1 else x for x in uneven))

关于Python列表转置和填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10610445/

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