在列表中插入项后增加每个元素

时间:2017-01-27 14:45:51

标签: python

我有两个列表需要彼此保持同步。以下示例是完整应用程序的精简版本。

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。在这一点上改变这两个列表解决方案将是非常耗时的。

1 个答案:

答案 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,他们就会看到更改。