我有这两个列表
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/