gpt4 book ai didi

python - 从列表中删除项目(for 循环),但如果不调用 list.copy() 则会出现索引外错误

转载 作者:行者123 更新时间:2023-12-01 03:49:42 24 4
gpt4 key购买 nike

我是 python 和 linux 以及一般编程的新手,对于菜鸟问题​​表示抱歉。

我有以下 CIF 股票列表,

['Type', 'Sharename', 'Comment']

[['Disk', '3tb', ''], ['Disk', 'c$', 'Default share']]

我想删除所有评论与下面列表中相同的共享,

['Remote Admin', 'Default share', 'Remote IPC']

我编写的下面的代码运行得很好,但我必须继续调用list = list.copy()。看来我在这里遗漏了一些东西。这是执行此操作的正确方法还是有更好的方法但我却找不到?



for skip in self.skip_shares_disc:
# print("Skip: " + skip)
for share in all_shares:
all_shares = all_shares.copy()
# print(" share[2]: " + share[2] + "drive: " + share[1])
if str(share[2]).upper() == str(skip).upper():
all_shares = all_shares.copy()
# print(" share[2]: " + share[2] + "drive: " + share[1])
all_shares.remove(share)
all_shares = all_shares.copy()

最佳答案

您不断执行all_shares.copy(),因为您在迭代列表时修改列表。这个补丁可以防止for循环随着列表突变而改变;这通常是不可取的。

但是,您可以通过迭代列表的切片/副本来删除所有副本:

for share in all_shares[:]

这只会制作列表的副本一次,而不是在每次迭代时制作两个副本。

关于python - 从列表中删除项目(for 循环),但如果不调用 list.copy() 则会出现索引外错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38462682/

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