gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:44:19 24 4
gpt4 key购买 nike

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

list_1 包含数据,list_2 包含索引值。

list_1 = ['item1', 'item2', 'item3', 'item4']
list_2 = [0, 1, 2, 3]

现在我想将 .insert() 插入 list_1 - 在任何索引处 - 并使列表两个保持同步。这意味着如果我在索引 1 处插入一个元素,它看起来像这样:

list_1 = ['item1', 'new_item!', 'item2', 'item3', 'item4']

我知道本例中的索引是 1,因此我可以将其插入到 list_2 中的适当位置

list_2 = [0, 1, 1, 2, 3]
# ^----- Newly inserted index

我的问题是,如何有效地更新此插入值之后的每个元素以增加 1?

<小时/>

我意识到对于这个例子来说这是非常基本和没有根据的,但是对于完整的应用程序,这两个列表是需要的,并且索引的 list_2 用于控制 PyQt UI。此时更改这两个列表解决方案将非常耗时。

最佳答案

这闻起来像 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,它们都会看到更改。

关于python - 在列表中插入项目后增加每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41896608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com