我正在迭代Python中的元组列表,并且如果它们符合某些条件,我会尝试删除它们.
for tup in somelist:
if determine(tup):
code_to_remove_tup
Run Code Online (Sandbox Code Playgroud)
我应该用什么代替code_to_remove_tup?我无法弄清楚如何以这种方式删除项目.
当我在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'条目?).有没有人有更优雅的解决方案,或者至少更有效?
那个与词典一起工作的人怎么样?
我有一个列表,其长度为: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项目的列表中,这种方法正在耗费时间.说真的,很多.
有没有人对如何获得更好的表现有另一个很棒的想法?
提前致谢.