首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用python从数组中删除特定元素

如何使用python从数组中删除特定元素
EN

Stack Overflow用户
提问于 2011-08-19 15:27:02
回答 6查看 531.5K关注 0票数 150

我想写一些从数组中移除特定元素的代码。我知道我必须对数组进行for循环才能找到与内容匹配的元素。

假设我有一个电子邮件数组,我想去掉与某个电子邮件字符串匹配的元素。

我实际上喜欢使用for循环结构,因为我也需要对其他数组使用相同的索引。

下面是我的代码:

代码语言:javascript
复制
for index, item in emails:
    if emails[index] == 'something@something.com':
         emails.pop(index)
         otherarray.pop(index)
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-08-19 15:28:52

你不需要迭代数组。只要:

代码语言:javascript
复制
>>> x = ['ala@ala.com', 'bala@bala.com']
>>> x
['ala@ala.com', 'bala@bala.com']
>>> x.remove('ala@ala.com')
>>> x
['bala@bala.com']

这将删除与该字符串匹配的第一个匹配项。

编辑:编辑之后,您仍然不需要遍历。只需这样做:

代码语言:javascript
复制
index = initial_list.index(item1)
del initial_list[index]
del other_list[index]
票数 216
EN

Stack Overflow用户

发布于 2016-11-11 00:44:18

使用filter()lambda将提供一种简洁的方法来删除不需要的值:

代码语言:javascript
复制
newEmails = list(filter(lambda x : x != 'something@something.com', emails))

这不会修改电子邮件。它创建一个新的列表newEmails,其中只包含匿名函数返回True的元素。

票数 19
EN

Stack Overflow用户

发布于 2011-08-19 16:38:48

您的for循环不正确,如果您需要在for循环中使用索引:

代码语言:javascript
复制
for index, item in enumerate(emails):
    # whatever (but you can't remove element while iterating)

在您的情况下,Bogdan解决方案是可以的,但您的数据结构选择不是很好。必须维护这两个列表,其中一个列表中的数据与另一个列表中的数据在同一索引中相关,这是很笨拙的。

元组列表(电子邮件,其他数据)可能更好,或者以电子邮件为关键字的字典。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7118276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档