循环和迭代python中的Remove()函数 vec=[-4,-2,0,2,4] 对于vec中的x: 如果x

循环和迭代python中的Remove()函数 vec=[-4,-2,0,2,4] 对于vec中的x: 如果x,python,Python,在迭代时不从列表中删除。使用另一个列表更干净 vec = [-4,-2,0,2,4] for x in vec: if x<0: print(x) vec.remove(x) print(vec) 您可以在一行中完成此操作。但是请注意,您实际上并没有从列表中删除数字,而是选择了积极的项目,并用新的项目替换旧的列表。它做你想做的,这样更干净 vec = [-4,-2,0,2,4] vec_copy = [] for x in vec:

在迭代时不从列表中删除。使用另一个列表更干净

vec = [-4,-2,0,2,4]

for x in vec:
    if x<0:
        print(x)
        vec.remove(x)

print(vec)
您可以在一行中完成此操作。但是请注意,您实际上并没有从列表中删除数字,而是选择了积极的项目,并用新的项目替换旧的列表。它做你想做的,这样更干净

vec = [-4,-2,0,2,4]
vec_copy = []

for x in vec:
    if x >= 0:
        vec_copy.append(x)

print(vec_copy)

迭代时不要从列表中删除。它会弄乱迭代器并导致奇怪的迭代行为。这是否意味着remove()函数不适合迭代器和循环?我应该像声明一个新列表(如vectwo)那样将其更改为其他列表?通常,在迭代数据结构时更改数据结构是一个坏主意,除非迭代器显式地提供了一个方法(如Java迭代器)。是的,在迭代时创建一个新的修改列表是一种安全的方法。谢谢你解决了我的困惑。对不起,如果x>=0,那么这会是一个更好的复制。
vec=[x为x,如果x>=0]
->->OP已经知道如何做了……是的,我没有注意到这一点的错误。我应该删除这部分还是整个帖子?我只是想建议在删除项目时不要重复列表。不,没关系。。仅供参考:)不要删除它。。。哈哈,我只是想看看我是否有任何逻辑谬误,肯定有更好的东西可以使用,但当我犯错误时,我想我应该知道会发生什么,谢谢你的反馈,朋友!好的,谢谢你的信息,贾斯汀。王子敖,不客气^__^
vec = [x for x in vec if x >= 0]