【发布时间】:2017-09-19 20:56:12
【问题描述】:
我在 python 中有两个嵌套列表,例如:
lst1 = [
[ [1,2],[3,4] ], [ [5,6,7],[8,9,10] ]
]
lst2 = [
[ [11,12],[13,14] ], [ [15,16,17],[18,19,20] ]
]
我希望能够放入与列表的扁平版本相对应的索引,并返回“交叉”列表:
例如index 为 5,输出为新列表
lst3 = [
[ [1,2],[3,4] ], [ [5,16,17],[18,19,20] ]
]
我可以通过执行三重嵌套循环来做到这一点,但我知道在 python 中必须有更快的方法,可能使用迭代器?
编辑:我在问如何更有效地执行以下操作:
lst1 = [
[ [1,2],[3,4] ], [ [5,6,7],[8,9,10] ]
]
lst2 = [
[ [11,12],[13,14] ], [ [15,16,17],[18,19,20] ]
]
lst3 = []
counter = 0
for i in xrange(len(lst1)):
for j in xrange(len(lst1[i])):
temp1 = []
for k in xrange(len(lst1[i][j])):
temp2 = []
counter += 1
if counter > 5:
temp2.append(lst2[i][j][k])
else:
temp2.append(lst1[i][j][k])
temp1.append(temp2)
lst3.append(temp1)
print lst1
print lst2
print lst3
lst3 结果:
[[[1], [2]], [[3], [4]], [[5], [16], [17]], [[18], [19], [20]]]
【问题讨论】:
-
您将不得不解释输入与输出的对应关系。
-
通过the Tutorial 了解可用的工具。可以先用你的自然语言在纸上写下完成任务所需的步骤。试着把它变成伪代码,最后变成实际代码。如果您对实际代码感到困惑,请回来询问。请阅读How to Ask 和minimal reproducible example。
标签: python iterator nested-lists