2024-04-25 20:27:53 发布
网友
我想写一些从数组中删除特定元素的东西。我知道我必须for遍历数组以找到与内容匹配的元素。
for
假设我有一个电子邮件数组,我想去掉与某个电子邮件字符串匹配的元素。
实际上,我想使用for循环结构,因为我还需要对其他数组使用相同的索引。
这是我的密码:
for index, item in emails: if emails[index] == 'something@something.com': emails.pop(index) otherarray.pop(index)
使用filter()和lambda将提供一种简洁的方法来删除不需要的值:
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()和列表理解/生成器表达式:
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(),它们提供列表,而不是数组。不是同一件事。
array.array()
numpy.array()
[]
list()
使用
filter()
和lambda
将提供一种简洁的方法来删除不需要的值:这不会修改电子邮件。它创建新的列表newEmails,其中只包含匿名函数返回True的元素。
不需要迭代数组。只是:
这将删除与字符串匹配的第一个匹配项。
编辑:编辑之后,仍然不需要重复。就这么做:
明智的做法是使用
zip()
和列表理解/生成器表达式:另外,如果您不使用
array.array()
或numpy.array()
,那么很可能您使用的是[]
或list()
,它们提供列表,而不是数组。不是同一件事。相关问题 更多 >
编程相关推荐