gpt4 book ai didi

Python 位置组合列表

转载 作者:行者123 更新时间:2023-11-30 23:09:32 24 4
gpt4 key购买 nike

我正在尝试为任意数量的相同对象生成所有可能的一维位置的列表。我希望对其进行格式化,以便每个坐标都是距前一个对象的距离,因此对于 3 个对象 (0,5,2) 意味着一个对象位于位置 0,另一个对象位于位置 5,另一个对象位于位置 7。

所以主要限制是坐标之和<=D。嵌套 for 循环对此非常有效。例如,有 3 个最大坐标为 D 的对象:

def positions(D):
output=[]
for i in range(D+1):
for j in range(D+1-i):
for k in range(D+1-i-j):
output.append((i,j,k))
return(output)

将其扩展到任意数量的对象的最佳方法是什么?如果不明确编写特定数量的 for 循环,我找不到好方法。

最佳答案

我认为你可以结合itertools.combinations,它会给你位置,并采取差异,这应该给你你的“与前一个对象的距离”行为。例如,使用

def diff(loc):
return [y-x for x,y in zip((0,) + loc, loc)]

我们有

In [114]: list(itertools.combinations(range(4), 3))
Out[114]: [(0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3)]

可能的位置,然后

In [115]: [diff(x) for x in itertools.combinations(range(4), 3)]
Out[115]: [[0, 1, 1], [0, 1, 2], [0, 2, 1], [1, 1, 1]]

您的相对距离版本。

关于Python 位置组合列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31149300/

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