gpt4 book ai didi

python - 将列表传递给Python中的函数时,如何对列表中的元素进行 'hide'?

转载 作者:行者123 更新时间:2023-11-30 22:46:13 25 4
gpt4 key购买 nike

假设我有一个列表

myList = [a,b,c,d,e]

还有一个函数

def doSomething(list):
#Does something to the list

我想像这样迭代调用该函数:

doSomething([b,c,d,e])
doSomething([a,c,d,e])
doSomething([a,b,d,e])
doSomething([a,b,c,e])
doSomething([a,b,c,d])

我首先想到的是这样的:

for x in range(0,len(myList)):
del myList[x]
doSomething(myList)

但这并没有真正起作用,因为每次我调用 del 它实际上都会删除该元素。我只是想在每次调用该函数时“隐藏”该元素。有办法做到这一点吗?

最佳答案

您可以使用itertools.combinations为此:

import itertools

for sublist in itertools.combinations([a, b, c, d, e], 4):
# 4 is the number of elements in each sublist.
# If you do not know the length of the input list, use len() - 1
doSomething(sublist)

这将使sublist成为一个元组。如果您需要它是一个列表,则可以在将其传递给 doSomething() 之前对其调用 list()

如果您关心 doSomething() 调用的完成顺序,您将需要反转迭代顺序,以便从删除第一个元素而不是最后一个元素开始:

for sublist in reversed(list(itertools.combinations([a, b, c, d, e], 4))):
doSomething(sublist)

这效率较低,因为必须预先生成所有子列表,而不是一次生成一个。 mgilson 在评论中建议先反转输入列表,然后反转每个子列表,这样应该更高效,但代码可能更难阅读。

关于python - 将列表传递给Python中的函数时,如何对列表中的元素进行 'hide'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40942256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com