迭代时从集合中删除项目

Skyork:

我有一个set myset,并且我有一个函数对其进行迭代以对其项目执行某些操作,并且该操作最终从该集合中删除了该项目。

显然,在迭代原始集合时我无法做到。但是,我可以这样做:

mylist = list(myset)
for item in mylist:
    # do sth

有什么更好的办法吗?

kiriloff:

首先,使用零比雷埃夫斯(Zero Piraeus)告诉我们的一套

myset = set([3,4,5,6,2])
while myset:
    myset.pop()
    print(myset)

我添加了print提供这些输出方法

>>> 
set([3, 4, 5, 6])
set([4, 5, 6])
set([5, 6])
set([6])
set([])

如果您要坚持选择列表,建议您使用列表理解功能深度复制列表,并遍历该副本,同时从原始列表中删除项目。在我的示例中,我使每个循环的原始列表的长度减小。

l = list(myset)
l_copy = [x for x in l]
for k in l_copy:
    l = l[1:]
    print(l)

>>> 
[3, 4, 5, 6]
[4, 5, 6]
[5, 6]
[6]
[]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章