在Python中, remove()
將刪除列表中第一個出現的value。 spa
如何從列表中刪除全部出現的值? code
這就是個人想法: 事件
>>> remove_values_from_list([1, 2, 3, 4, 2, 2, 3], 2) [1, 3, 4, 3]
我以犧牲可讀性爲代價,認爲該版本稍快一些,由於它不會迫使用戶從新檢查列表,所以不管如何,要作的刪除操做徹底相同: 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)
您能夠使用列表理解: 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]
功能方法: 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]
若是必須修改原始列表,則能夠使用切片分配,同時仍使用有效的列表理解(或生成器表達式)。 co
>>> x = [1, 2, 3, 4, 2, 2, 3] >>> x[:] = (value for value in x if value != 2) >>> x [1, 3, 4, 3]
要刪除全部重複的事件並將其留在列表中:
test = [1, 1, 2, 3] newlist = list(set(test)) print newlist [1, 2, 3]
這是我用於歐拉計畫的功能:
def removeOccurrences(e): return list(set(e))