我想写一些从数组中移除特定元素的代码。我知道我必须对数组进行for
循环才能找到与内容匹配的元素。
假设我有一个电子邮件数组,我想去掉与某个电子邮件字符串匹配的元素。
我实际上喜欢使用for循环结构,因为我也需要对其他数组使用相同的索引。
下面是我的代码:
for index, item in emails:
if emails[index] == 'something@something.com':
emails.pop(index)
otherarray.pop(index)
发布于 2011-08-19 15:28:52
你不需要迭代数组。只要:
>>> 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]
发布于 2016-11-11 00:44:18
使用filter()
和lambda
将提供一种简洁的方法来删除不需要的值:
newEmails = list(filter(lambda x : x != 'something@something.com', emails))
这不会修改电子邮件。它创建一个新的列表newEmails,其中只包含匿名函数返回True的元素。
发布于 2011-08-19 16:38:48
您的for循环不正确,如果您需要在for循环中使用索引:
for index, item in enumerate(emails):
# whatever (but you can't remove element while iterating)
在您的情况下,Bogdan解决方案是可以的,但您的数据结构选择不是很好。必须维护这两个列表,其中一个列表中的数据与另一个列表中的数据在同一索引中相关,这是很笨拙的。
元组列表(电子邮件,其他数据)可能更好,或者以电子邮件为关键字的字典。
https://stackoverflow.com/questions/7118276
复制相似问题