我尝试建立一些线性连接,并且有一些列表:
cs = [[1,2,3,4],[1,2,4,5],[1,2,6,7],[3,4,5,6]]
b = [1,2,0,2,0,1,2]
我首先将b
重新组合为bb
bb = [[1,2],[0,2],[0,1,2]]
我尝试再次将bb
重新分组,条件是
cs[u[i]][u[i+1]] > 3
,将其重新组合为另一个子列表。
u
是bb
i
是u
的索引
所以愿望输出是:
output = [[1],[2],[0,2],[0,1],[2]]
对于bb
中的第一个子列表,cs[1][2]
= 4和> 3,因此将其重新组合为[1],[2]
对于bb
中的第三个子列表,cs[0][1] < 3 and cs[1][2] >3
,因此将其重新组合为
[0,1],[2]
如何在python中获取output
?
答案 0 :(得分:0)
这不漂亮,但这应该可以为您完成工作:
cs = [[1,2,3,4],[1,2,4,5],[1,2,6,7],[3,4,5,6]]
bb = [[1,2],[0,2],[0,1,2]]
# Make a copy of bb
cc = bb.copy()
# Set an index offset
ci = 0
# Iterate through list bb and alter cc if condition is met
for i in range(len(bb)):
for j in range(len(bb[i])-1):
if cs[bb[i][j]][bb[i][j+1]]>3:
# Insert the latter part of bb[i] at i+ci+1 before changing the value at i+ci
cc.insert(i+ci+1, bb[i][j+1:])
cc[i+ci] = list(bb[i][:j+1])
# Increase the index offset by 1
ci+=1
cc
我从中得到的输出是:
[[1], [2], [0, 2], [0, 1], [2]]