gpt4 book ai didi

Python:将列表与其索引进行比较并创建一个新列表

转载 作者:行者123 更新时间:2023-11-30 22:40:35 24 4
gpt4 key购买 nike

在Python中,我想将列表列表(例如LL1)与其列表的索引进行比较,并创建另一个>列表的列表(例如LL2),使得LL2具有与LL1相同的精确形状。正如我们所看到的,列表 LL1 是非齐次的。例如:

LL1 = [[0, 1, 3, 6, 7], [3, 7], [0, 1, 2, 6, 7], [3], [0, 3, 4, 5, 8]]
LL2 = [[0, 0, 0, 0, 0], [1, 1], [2, 2, 2, 2, 2], [3], [4, 4, 4, 4, 4]]

我想以尽可能最快的方式实现这一目标。目前,我使用以下方法:

MP = map(len, LL1)
LL2 = map( lambda x: MP[x]*[x] , range(len(LL1)) )

对于大型数据集,第二步并不是很快。有没有比我正在做的更快的替代方案?我将非常感谢任何帮助。

最佳答案

您可以使用列表理解一步完成此操作:

>>> LL1 = [[0, 1, 3, 6, 7], [3, 7], [0, 1, 2, 6, 7], [3], [0, 3, 4, 5, 8]]
>>> LL2 = [[i]*len(sub) for i, sub in enumerate(LL1)]
>>> LL2
[[0, 0, 0, 0, 0], [1, 1], [2, 2, 2, 2, 2], [3], [4, 4, 4, 4, 4]]
>>>

另一种方式:

>>> LL2 = [[i for _ in range(len(sub))] for i, sub in enumerate(LL1)]
>>> LL2
[[0, 0, 0, 0, 0], [1, 1], [2, 2, 2, 2, 2], [3], [4, 4, 4, 4, 4]]
>>>

不确定哪个更快...

关于Python:将列表与其索引进行比较并创建一个新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42871228/

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