我可以从列表中排除一个项目,但不能从列表中删除它吗?



假设我有一个列表

List = ['bob', 'john', 'mary', 'jill']

我想将列表传递给一个函数,但我不希望john成为传递的列表的一部分。我不想永久删除它,只是在传递时排除它。

这可能吗?我看到的所有pop/remove的例子都把它从列表中删除了。我知道我可以复制并删除它,但我想我应该问一下python中是否已经存在这样的东西。

您不能"暂时";删除一些东西,并期望它会自动恢复。只有两种可能:删除后再放回去,或者创建一个重复的数据结构。

除非顺序很重要,否则我可能会从list构造一个frozenset,然后在没有所需元素的情况下创建一个新的frozenset,特别是如果您将在循环中这样做:

full_list = ['bob', 'john', 'mary', 'jill']
full_set = frozenset(List)
no_john_set = full_set - {'john'}   # frozenset({'bob', 'mary', 'jill'})

正如larsks在评论中提到的,您可以将新列表传递给您希望调用的函数,而无需更改原始列表:

lst = ['bob', 'john', 'mary', 'jill']
def x(lstp):
for i in lstp:
print(i)
x([name for name in lst if name != 'john'])

上面的代码将打印:

bob
mary
jill

,排除'john'

上面的程序创建了一个新列表,作为参数传递给myfunc,然后迭代lst,如果语句if name != 'john'的计算结果为True,则将其中的每一项添加到新列表中,当然,只有当列表中的项不是'john'时才会发生这种情况。

相关内容

  • 没有找到相关文章

最新更新