Python 列表';减去';项目
就像你能写的一样Python 列表';减去';项目,python,python-3.x,Python,Python 3.x,就像你能写的一样 L + [item] 要将项目以复制列表的形式添加到列表中,您是否可以执行类似的操作,但将减法作为 L - [item] 不起作用?因为只有当列表以相同的子列表结尾时才有意义(如果您希望L-[item]应从列表末尾删除该项,就像L+[item]在末尾添加项一样) 应该没问题 我不建议您使用del或list.remove,因为它会修改列表,而您的示例会创建一个新列表。因为只有当列表以相同的子列表结尾时(如果您希望L-[item]应从列表末尾删除该项目,方法与L+[item]在
L + [item]
要将项目以复制列表的形式添加到列表中,您是否可以执行类似的操作,但将减法作为
L - [item]
不起作用?因为只有当列表以相同的子列表结尾时才有意义(如果您希望
L-[item]
应从列表末尾删除该项,就像L+[item]
在末尾添加项一样)
应该没问题
我不建议您使用
del
或list.remove
,因为它会修改列表,而您的示例会创建一个新列表。因为只有当列表以相同的子列表结尾时(如果您希望L-[item]
应从列表末尾删除该项目,方法与L+[item]
在末尾添加项目相同。)
应该没问题
我不建议您使用del
或list.remove
,因为它会在您的示例创建新列表时修改列表。要按值删除元素,请使用。这将修改现有的集合
要按索引删除,请执行删除L[i](同样,修改已到位)
如果您使用的是减法语法,则可以使用set
s(将创建并返回一个新的集合)完成该操作:
要按值删除元素,请使用。这将修改现有的集合
要按索引删除,请执行删除L[i](同样,修改已到位)
如果您使用的是减法语法,则可以使用set
s(将创建并返回一个新的集合)完成该操作:
可以使用list.remove(element)从列表()中删除元素:
可以使用list.remove(element)从列表()中删除元素:
由于
L+[item]
创建了一个新列表,要创建一个删除了项目的新列表,请使用列表理解:
L = [value for value in L if value != item]
这将删除L
中等于item
的所有值。要删除最后一个元素,请使用切片:
L = L[:-1]
这将创建一个没有最后一个索引的新列表
使用
dell[index]
或L.remove(item)
将从现有列表中删除值,这与L+[item]
不完全相同,因为L+[item]
创建了一个新列表,要创建一个删除了项的新列表,请使用列表理解:
L = [value for value in L if value != item]
这将删除L
中等于item
的所有值。要删除最后一个元素,请使用切片:
L = L[:-1]
这将创建一个没有最后一个索引的新列表
使用
del L[index]
或L.remove(item)
将从现有列表中删除值,这与L+[item]
不同如果您想要一个带有减法运算符的列表,您可以轻松地编写它:
class SubtractableList(list):
"""A list that supports the subtraction operator.
For example:
>>> l = SubtractableList([1, 2, 3])
>>> l - [3]
[1, 2]
>>> l -= [2]
>>> SubtractableList(range(5)) - l
[0, 2, 4]
"""
def __sub__(self, other):
try:
other = set(other)
except TypeError: # some item in other is not hashable
pass # so fall back to quadratic algorithm
return type(self)(item for item in self if item not in other)
如果您想要一个带有减法运算符的列表,您可以轻松地编写它:
class SubtractableList(list):
"""A list that supports the subtraction operator.
For example:
>>> l = SubtractableList([1, 2, 3])
>>> l - [3]
[1, 2]
>>> l -= [2]
>>> SubtractableList(range(5)) - l
[0, 2, 4]
"""
def __sub__(self, other):
try:
other = set(other)
except TypeError: # some item in other is not hashable
pass # so fall back to quadratic algorithm
return type(self)(item for item in self if item not in other)
set.remove
更接近于list.remove
,因为如果x
不存在,两者都会引发异常(discard
会自动忽略该异常)。这通常不太可能隐藏bug。set.remove
更接近列表。remove
因为如果x
不存在,两者都会引发异常(discard
会自动忽略该异常)。这通常不太可能隐藏bug。挑剔:L+[item]
不会将item
添加到L
。它创建一个L
的浅拷贝,末尾带有项
。要将项目添加到L
,请使用L.append(项目)
。要删除一个项目,您可以使用L.remove(item)
。是的,我意识到这一点,我只是想用一种方法创建一个类似的L副本,但这次没有一个特定的项目……挑剔:L+[item]
不会将项目
添加到L
。它创建一个L
的浅拷贝,末尾带有项
。要将项目添加到L
,请使用L.append(项目)
。要删除项目,请使用L.remove(item)
。是的,我意识到这一点,我只是想用一种方法创建一个类似的L副本,但这次没有特定的项目。。。