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

2024-04-25 20:27:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一些从数组中删除特定元素的东西。我知道我必须for遍历数组以找到与内容匹配的元素。

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

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

这是我的密码:

for index, item in emails:
    if emails[index] == 'something@something.com':
         emails.pop(index)
         otherarray.pop(index)

Tags: 字符串in元素密码内容forindexif
3条回答

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

newEmails = list(filter(lambda x : x != 'something@something.com', emails))

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

不需要迭代数组。只是:

>>> 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]

明智的做法是使用zip()和列表理解/生成器表达式:

filtered = (
    (email, other) 
        for email, other in zip(emails, other_list) 
            if email == 'something@something.com')

new_emails, new_other_list = zip(*filtered)

另外,如果您不使用array.array()numpy.array(),那么很可能您使用的是[]list(),它们提供列表,而不是数组。不是同一件事。

相关问题 更多 >