假设我有一个序列和一个列表列表:
[“A”“B”“C”“D”“E”] [[:1:2] [:3:4:5]]
我想使用序列来标记列表列表中的每个元素:
[[“A”:1“B”:2] [“C”:3“D”:4“E”:5]]
我的算法应该是什么?
编辑:那么Stack Overflow可以给出的最佳答案是制作副本然后改变它,并且仅在数据是特定形状时才有效?
我接受了这个答案,因为它是正确的,也是唯一给出的答案,但我们肯定可以做得更好吗?
答案 0 :(得分:1)
应该相当简单。在通过序列移动索引时迭代子列表元素。如果列表长于序列,则可以使用模数将移动索引设置为序列到达结尾时的开头。
int index = 0
for(sublist in list) {
for(element in sublist) {
element.label = sequence[index++]
index = index modulo length_of(sequence)
}
}
如果您的子列表也可以有子列表,那么您可能需要制作递归方法。