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副本,但这次没有特定的项目。。。