如何用Python从数组中移除特定元素
我想写一个程序,能够从一个数组中删除特定的元素。我知道我需要用for
循环来遍历这个数组,找到和我想要删除的内容匹配的元素。
假设我有一个电子邮件的数组,我想删除其中一个和某个电子邮件字符串匹配的元素。
我其实想用for
循环的结构,因为我还需要用同样的索引来处理其他数组。
这是我写的代码:
for index, item in emails:
if emails[index] == 'something@something.com':
emails.pop(index)
otherarray.pop(index)
7 个回答
5
你的for循环写得不太对,如果你需要在for循环中使用索引,可以这样写:
for index, item in enumerate(emails):
# whatever (but you can't remove element while iterating)
在你的情况下,Bogdan的解决方案是可以的,但你选择的数据结构不是很好。要同时维护两个列表,并且要确保它们在同一个索引位置的数据是相关的,这样做比较麻烦。
使用一个包含元组(邮箱,其他数据)的列表可能会更好,或者用邮箱作为键的字典也不错。
24
使用 filter()
和 lambda
可以很方便地去掉不需要的值,这种方法简单又直接:
newEmails = list(filter(lambda x : x != 'something@something.com', emails))
这个方法不会改变原来的邮件列表。它会创建一个新的列表 newEmails,这个列表只包含那些匿名函数返回 True 的元素。
229
你不需要一个一个地查看数组里的每个元素。只需要这样做:
>>> x = ['ala@ala.com', 'bala@bala.com']
>>> x
['ala@ala.com', 'bala@bala.com']
>>> x.remove('ala@ala.com')
>>> x
['bala@bala.com']
这样就能删除第一个匹配到的字符串。
补充说明:在你修改之后,你还是不需要一个一个地查看。只需这样做:
index = initial_list.index(item1)
del initial_list[index]
del other_list[index]