假设您有一个列表
>>> m = ['a','b','c']
我想创建一个新的列表n,它包含m中除给定项之外的所有内容(例如项'a')。
n
m
'a'
>>> m.remove('a') >>> m m = ['b', 'c']
原来的列表被改变了(值'a'从原来的列表中被移除)。有没有办法在不改变原来的列表的情况下得到一个新的列表sans-'a'?所以我的意思是m应该仍然是[ 'a', 'b', 'c' ],我将得到一个 new 列表,它必须是[ 'b', 'c' ]。
[ 'a', 'b', 'c' ]
[ 'b', 'c' ]
jum4pzuy1#
我假设你想创建一个没有给定元素的新列表,而不是改变原来的列表。一种方法是使用列表解析:
m = ['a', 'b', 'c'] n = [x for x in m if x != 'a']
n现在是m的副本,但没有'a'元素。另一种方法当然是先复制列表
m = ['a', 'b', 'c'] n = m[:] n.remove('a')
如果按索引删除值,则更简单
n = m[:index] + m[index+1:]
jpfvwuh42#
有一种简单的方法可以做到这一点,使用内置函数:filter。下面是ax示例:
a = [1, 2, 3, 4] b = filter(lambda x: x != 3, a)
sqyvllje3#
如果顺序不重要,可以使用set(此外,在sets中删除似乎很快):
list(set(m) - set(['a']))
这将从原始列表中移除重复的元素
0wi1tuuw4#
我们可以通过list的内置copy()函数来实现;但是,应该为副本指定一个新名称;
m = ['a','b','c'] m_copy=m.copy() m_copy.remove('a') print (m)
[“a”、“b”、“c”]
print(m_copy)
〔“乙”、“丙”〕
kyks70gy5#
你可以用列表解析创建一个没有违规元素的新列表。这将保留原始列表的值。
l = ['a', 'b', 'c'] [s for s in l if s != 'a']
vm0i2vca6#
另一种理解列表的方法是numpy:
>>> import numpy >>> a = [1, 2, 3, 4] >>> list(numpy.remove(a, a.index(3))) [1, 2, 4]
nmpmafwu7#
我们可以做到这一点,而不使用内置删除函数,也不创建新的列表变量代码:
# List m m = ['a', 'b', 'c'] # Updated list m, without creating new list variable m = [x for x in m if x != a] print(m)
输出
>>> ['b', 'c']
kgsdhlau8#
这个问题很有用,因为我有时会在整个脚本中使用一个列表,但我需要在某个步骤对列表元素的子集应用逻辑。在这种情况下,我发现使用同一个列表但只排除单个步骤所需的元素是很有用的,而不需要创建一个具有不同名称的全新列表。为此,您可以使用:1.列表理解:假设您有l=['a','b','c']来排除B,则可以有[x for x in l if x!='b']
l=['a','b','c']
[x for x in l if x!='b']
list(set(l) - set(['b']))
'b'
['b']
8条答案
按热度按时间jum4pzuy1#
我假设你想创建一个没有给定元素的新列表,而不是改变原来的列表。一种方法是使用列表解析:
n
现在是m
的副本,但没有'a'
元素。另一种方法当然是先复制列表
如果按索引删除值,则更简单
jpfvwuh42#
有一种简单的方法可以做到这一点,使用内置函数:filter。
下面是ax示例:
sqyvllje3#
如果顺序不重要,可以使用set(此外,在sets中删除似乎很快):
这将从原始列表中移除重复的元素
0wi1tuuw4#
我们可以通过list的内置copy()函数来实现;但是,应该为副本指定一个新名称;
[“a”、“b”、“c”]
〔“乙”、“丙”〕
kyks70gy5#
你可以用列表解析创建一个没有违规元素的新列表。这将保留原始列表的值。
vm0i2vca6#
另一种理解列表的方法是numpy:
nmpmafwu7#
我们可以做到这一点,而不使用内置删除函数,也不创建新的列表变量
代码:
输出
kgsdhlau8#
这个问题很有用,因为我有时会在整个脚本中使用一个列表,但我需要在某个步骤对列表元素的子集应用逻辑。在这种情况下,我发现使用同一个列表但只排除单个步骤所需的元素是很有用的,而不需要创建一个具有不同名称的全新列表。为此,您可以使用:
1.列表理解:假设您有
l=['a','b','c']
来排除B,则可以有[x for x in l if x!='b']
list(set(l) - set(['b']))
,请注意,这里您传递的是'b'
作为列表['b']