從列表中刪除全部出現的值?

在Python中, remove()將刪除列表中第一個出現的value。 spa

如何從列表中刪除全部出現的值? code

這就是個人想法: 事件

>>> remove_values_from_list([1, 2, 3, 4, 2, 2, 3], 2)
[1, 3, 4, 3]

#1樓

我以犧牲可讀性爲代價,認爲該版本稍快一些,由於它不會迫使用戶從新檢查列表,所以不管如何,要作的刪除操做徹底相同: rem

x = [1, 2, 3, 4, 2, 2, 3]
def remove_values_from_list(the_list, val):
    for i in range(the_list.count(val)):
        the_list.remove(val)

remove_values_from_list(x, 2)

print(x)

#2樓

您能夠使用列表理解: test

def remove_values_from_list(the_list, val):
   return [value for value in the_list if value != val]

x = [1, 2, 3, 4, 2, 2, 3]
x = remove_values_from_list(x, 2)
print x
# [1, 3, 4, 3]

#3樓

功能方法: lambda

2.x 方法

>>> x = [1,2,3,2,2,2,3,4]
>>> filter(lambda a: a != 2, x)
[1, 3, 3, 4]

3.x 生成器

>>> x = [1,2,3,2,2,2,3,4]
>>> list(filter((2).__ne__, x))
[1, 3, 3, 4]

要麼 filter

>>> x = [1,2,3,2,2,2,3,4]
>>> list(filter(lambda a: a != 2, x))
[1, 3, 3, 4]

#4樓

若是必須修改原始列表,則能夠使用切片分配,同時仍使用有效的列表理解(或生成器表達式)。 co

>>> x = [1, 2, 3, 4, 2, 2, 3]
>>> x[:] = (value for value in x if value != 2)
>>> x
[1, 3, 4, 3]

#5樓

要刪除全部重複的事件並將其留在列表中:

test = [1, 1, 2, 3]

newlist = list(set(test))

print newlist

[1, 2, 3]

這是我用於歐拉計畫的功能:

def removeOccurrences(e):
  return list(set(e))
相關文章
相關標籤/搜索