python - 根据索引从两个列表中创建列表列表

标签 python loops merge logic

我有这两个列表

indexes = [4, 2, 4, 6]
values = [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]

我希望将这些列表合并为这样。每个索引值对应于合并的列表大小。

[[0, 1, 2, 3], [0, 1], [2, 3, 0, 1], [2, 3, 0, 1, 2, 3]]

我目前的答案是好的,但我想知道是否有更好的方法。

ids = []
cIndex = 0
for i in indexes:
    ids.append([values[cIndex+x] for x in xrange(i)])
    cIndex += i

最佳答案

您可以使用 list slicing列表理解表达式如:

>>> indexes = [4, 2, 4, 6]
>>> values = [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]

>>> [values[sum(indexes[:i]):sum(indexes[:i+1])] for i, index in enumerate(indexes)]
[[0, 1, 2, 3], [0, 1], [2, 3, 0, 1], [2, 3, 0, 1, 2, 3]]

关于python - 根据索引从两个列表中创建列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47443291/

相关文章:

python - 根据列值合并多个数据帧时缺少列

python - 迁移 python 2 到 3 : types. 文件类型

python - Django:按从 ModelForm 中排除的字段进行验证

javascript - 如何创建一个由订单号 : array within array, 宾果卡和循环陷阱组成的正方形......

r - gvisMerge + gvisAnnotatedTimeLine公共(public)RangeSelector

arrays - 将多个数组组合/合并为一个

python - 检测数字列表中的峰值并记录它们的位置

python - VideoCapture()读取多个视频和帧分辨率问题

javascript - React - 使用循环创建嵌套组件

c# - 提高 C# 循环的效率