gpt4 book ai didi

python - 如何在 python 中编写一个函数来一次获取数组的一个排列

转载 作者:行者123 更新时间:2023-11-28 18:19:31 28 4
gpt4 key购买 nike

下面的代码给出了数组的所有排列,我想写一个函数,一次可以使用一个排列(我想一次处理一个排列,例如 [2, 3, 5, 4, 1 , 6] 无需提前生成它们,以便能够在目标函数中使用它)

s = np.array([1, 2, 3, 4, 5, 6])
from itertools import permutations
for s_temp in permutations(s):
print (s_temp)

最佳答案

您有多种可能性,从 permutations 开始返回一个迭代器,这样您的代码就可以通过更改 print 为您需要调用的任何内容来工作。

from itertools import permutations
def process(s):
for s_temp in permutations(s):
call_your_stuff(s_temp)

此外,一旦您拥有排列对象,您就可以调用 next 获取其上的下一个项目:

from itertools import permutations
s = permutations(range(3))
s
<itertools.permutations object at 0x000000000377CFC0>
next(s)
(0, 1, 2)

如果您想为每个排列处理相同的函数,您可以使用 map,只需将示例中的 lambda 函数替换为您需要调用的函数:

s = permutations(range(3))
map(lambda (x, y, z): x+y-z, s)
[-1, 1, -1, 3, 1, 3]

您可以将数据收集到列表中以供进一步处理:

s = list(permutations(range(3))) 
s
[(0, 1, 2), (0, 2, 1), (1, 0, 2), (1, 2, 0), (2, 0, 1), (2, 1, 0)]

请注意,如果您不收集数据(到列表、元组等),一旦您使用了排列对象迭代器,数据将“丢失”(您将不得不再次重新计算)

关于python - 如何在 python 中编写一个函数来一次获取数组的一个排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46071543/

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