微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何枚举阶乘的所有模式?

如何解决如何枚举阶乘的所有模式?

我正在尝试创建一个函数来计算每条路线的所有距离。例如:A 在 (0,0),B 在 (1,0),C 在 (0,1)。然后有 6 条路线可以穿过所有城镇,如 ABC 或 ACB 或 BAC 或 BCA 或 CAB 或 CBA。 在这里,我的问题是,如何枚举所有阶乘模式,如 ABC、ACB、BAC、BCA、CAB、CBA。如果是2就容易了!或 3!,但如果例如 8!,那将是非常困难的。如果你知道,我想知道你的建议!

解决方法

import itertools

string = 'ABC';

result = itertools.permutations(string,3)

for val in result:
    print(''.join(val))
,

Python 有一个 bultin 函数 itertools.permutations。你可以这样使用它

from itertools import permutations

data = ['a','b','c']
print(list(permutations(data)))

输出:

[('a','c'),('a','c','b'),('b','a','a'),('c','a')]

你可以让数据包含像 data = [(0,0),(1,(0,1)] 这样的元组 然后输出看起来像这样

[((0,1)),((0,1),0)),((1,0))]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。