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

标签 python list

在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/

相关文章:

python - xarray - 从另一个 DataArray 的时间标签中选择/索引 DataArray

python - 在 3 维堆栈的每一层上执行 2 维操作

python - 从项目列表创建特定形状的 Pandas 数据框

C# - 将 2 个列表与自定义元素进行比较

c# - 在列表中查找相似(或相等的连续项目)

python - 在 python 中搜索字典列表

Python - 如何根据 3D(r,g,b)空间中源颜色的颜色 "distance"对颜色列表进行排序?

Python 套件测试不运行测试

python - 如何从多列构建索引并设置为列 pandas 数据框?

python - 将 WTForms 与枚举一起使用