当我在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'条目?).有没有人有更优雅的解决方案,或者至少更有效?
那个与词典一起工作的人怎么样?
删除数组中负面元素的最有效方法是什么?我已尝试numpy.delete并从表单的数组和代码中删除所有特定值x[x != i].
对于:
import numpy as np
x = np.array([-2, -1.4, -1.1, 0, 1.2, 2.2, 3.1, 4.4, 8.3, 9.9, 10, 14, 16.2])
Run Code Online (Sandbox Code Playgroud)
我想最终得到一个数组:
[0, 1.2, 2.2, 3.1, 4.4, 8.3, 9.9, 10, 14, 16.2]
Run Code Online (Sandbox Code Playgroud)