如何使用某些条件重新组合嵌套列表?

时间:2019-03-29 14:22:05

标签: python list function

我尝试建立一些线性连接,并且有一些列表:

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,将其重新组合为另一个子列表。

ubb

中的子列表

iu的索引

所以愿望输出是:

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

1 个答案:

答案 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]]