我有两个列表需要彼此保持同步。以下示例是完整应用程序的精简版本。
interface ethernet0/0/0
description This is a test file
ip address 192.168.0.1 255.255.255.0
---
interface ethernet0/0/1
description this is another test file
ip address 192.168.0.2 255.255.255.0
包含数据,<nested:present name="myForm">
//implement logic
</nested:present>
包含索引值。
list_1
现在我希望list_2
进入list_1 = ['item1', 'item2', 'item3', 'item4']
list_2 = [0, 1, 2, 3]
- 在任何索引处 - 并保持列表两个同步。这意味着如果我在索引1处插入一个元素,使它看起来像这样:
.insert()
我知道这种情况下的索引是list_1
所以我可以在list_1 = ['item1', 'new_item!', 'item2', 'item3', 'item4']
1
我的问题是,如何在插入的值增加1之后有效地更新每个元素?
我意识到这对于这个例子来说非常基本且没有根据,但是对于完整的应用程序,需要这两个列表,并且list_2
索引用于控制PyQt UI。在这一点上改变这两个列表解决方案将是非常耗时的。
答案 0 :(得分:1)
这对我来说闻起来像XY problem,但无论如何......
您可以像这样改变list_2
:
list_2 = [0, 1, 2, 3]
val = 1
idx = 1
list_2.insert(idx, val)
print(list_2)
list_2[idx+1:] = [u+1 for u in list_2[idx+1:]]
print(list_2)
<强>输出强>
[0, 1, 1, 2, 3]
[0, 1, 2, 3, 4]
因为我们使用切片分配,我们会改变原始list_2
对象而不是替换它,所以如果任何其他对象都引用了list_2
,他们就会看到更改。