Python列表并删除一个变量
我是编程新手。我试图理解python中不同的数据结构。在我尝试的列表中:Python列表并删除一个变量,python,python-2.7,Python,Python 2.7,我是编程新手。我试图理解python中不同的数据结构。在我尝试的列表中: mylist = [1,2,1,2,1,2,3,4,5,1,2,3] print mylist mylist.remove(2) print mylist 它应该从列表中删除2个。只有第一个。 输出如下所示: [1, 2, 1, 2, 1, 2, 3, 4, 5, 1, 2, 3] [1, 1, 2, 1, 2, 3, 4, 5, 1, 2, 3] 如何删除所有匹配项?您可以使用 或者简单的列表理解 my_list
mylist = [1,2,1,2,1,2,3,4,5,1,2,3]
print mylist
mylist.remove(2)
print mylist
它应该从列表中删除2个。只有第一个。
输出如下所示:
[1, 2, 1, 2, 1, 2, 3, 4, 5, 1, 2, 3]
[1, 1, 2, 1, 2, 3, 4, 5, 1, 2, 3]
如何删除所有匹配项?您可以使用
或者简单的列表理解
my_list = [i for i in my_list if i!=2]
您甚至可以使用remove()
执行以下操作以获得正确的结果:
>>> while True:
... try:
... mylist.remove(2)
... except:
... break
...
>>> mylist
[1, 1, 1, 3, 4, 5, 1, 3]
mylist = [number for number in mylist if number != 2]
但是,这是丑陋的,并且经常导致意外的行为。您不应该在迭代时修改列表
mylist = [x for x in mylist if x != 2]
这比过滤器更简单。使用列表理解可能是实现这一点的最有效的方法:
>>> while True:
... try:
... mylist.remove(2)
... except:
... break
...
>>> mylist
[1, 1, 1, 3, 4, 5, 1, 3]
mylist = [number for number in mylist if number != 2]
这是因为list.remove(x)
只删除列表中第一次出现的x
。上述解决方案将基于mylist
创建一个新列表,该列表将包含mylist
的所有元素,如果它们不等于2。,则预期会出现此行为:
列表。删除(x)
从列表中删除值为x的第一项。如果没有此类项目,则为错误
要从列表中删除所有出现的值,可以使用列表理解:
seq = [1,2,1,2,1,2,3,4,5,1,2,3]
seq = [value for value in seq in value != 2]
mylist = [x for x in mylist if x != 2]
从python帮助:
help(list.remove)
你可以得到这样的解释:
L.remove(值)--删除第一次出现的值。
如果值不存在,则引发ValueError
您可以通过使用列表理解来实现:
seq = [1,2,1,2,1,2,3,4,5,1,2,3]
seq = [value for value in seq in value != 2]
mylist = [x for x in mylist if x != 2]
它只是根据您的条件创建一个新列表。另一种方法(如果您不创建新列表):
谢谢大家。列表理解似乎是适合我的。但我不知道我应该选择哪一个作为答案。谢谢你们的回答。可能是重复的,但它几乎是更清楚的问题和答案。