相关疑难解决方法(0)

迭代时如何从列表中删除项目?

我正在迭代Python中的元组列表,并且如果它们符合某些条件,我会尝试删除它们.

for tup in somelist:
    if determine(tup):
         code_to_remove_tup
Run Code Online (Sandbox Code Playgroud)

我应该用什么代替code_to_remove_tup?我无法弄清楚如何以这种方式删除项目.

python iteration

917
推荐指数
16
解决办法
45万
查看次数

在Python中从序列中删除项目的优雅方法?

当我在Python中编写代码时,我经常需要根据某些条件从列表或其他序列类型中删除项目.我还没有找到优雅高效的解决方案,因为从当前正在迭代的列表中删除项目是不好的.例如,你不能这样做:

for name in names:
    if name[-5:] == 'Smith':
        names.remove(name)
Run Code Online (Sandbox Code Playgroud)

我通常最终做这样的事情:

toremove = []
for name in names:
    if name[-5:] == 'Smith':
        toremove.append(name)
for name in toremove:
    names.remove(name)
del toremove
Run Code Online (Sandbox Code Playgroud)

这是无效的,相当丑陋和可能有错误(它如何处理多个'John Smith'条目?).有没有人有更优雅的解决方案,或者至少更有效?

那个与词典一起工作的人怎么样?

python optimization set series

55
推荐指数
4
解决办法
4万
查看次数

Python性能:从列表中删除项目

我有一个列表,其长度为:370000.在这个列表中,我有以下项目:"a", "y", "Y", "q", "Q", "p", "P",,这意味着这是一个单词列表,但我不时会得到那些单个字符.

我想从列表中删除这些字符,我在python中很新,但我想到的第一件事就是做类似的事情:

for word in words:
    if word== 'm' or  word== 'y' or word== 'Y' or word== 'p' or word== 'Q' or word== 'q' or word== 'a' or word== 'uh':
        words.remove(word)
Run Code Online (Sandbox Code Playgroud)

在一个包含370.000项目的列表中,这种方法正在耗费时间.说真的,很多.

有没有人对如何获得更好的表现有另一个很棒的想法?

提前致谢.

python performance list

7
推荐指数
1
解决办法
384
查看次数

标签 统计

python ×3

iteration ×1

list ×1

optimization ×1

performance ×1

series ×1

set ×1