Python 如何对一组字符串按照不同位置生成

2018-12-08 11:43:55 +08:00
 iPhonePKAndroid

比如 abcd

我要生成 abcd dcab bcda adcb cdab badc dabc chad

好像没了吧

这样子用 python 有什么好的算法吗

1549 次点击
所在节点    Python
8 条回复
westoy
2018-12-08 11:47:55 +08:00
itertools.permutations
crab
2018-12-08 11:49:04 +08:00
from itertools import permutations
iPhonePKAndroid
2018-12-08 11:59:26 +08:00
@crab
@westoy 谢谢谢谢,就是他
mainlong
2018-12-08 14:21:02 +08:00
这应该是高中数学上排列组合。可以搜得到相关库。

如果字符串里面字符不重复,那应该是 n!的种,你这个应该是 24 种。

如果有重复的就比较麻烦了,花时间算了。
iPhonePKAndroid
2018-12-10 12:00:12 +08:00
@crab
@westoy 有什么方法能够计算他能够生成多少个数量?
necomancer
2018-12-11 20:02:04 +08:00
@iPhonePKAndroid 全排列:
def p(n,m):
necomancer
2018-12-11 20:04:47 +08:00
@iPhonePKAndroid
全排列:
from math import gamma
def p(n,m):
return gamma(n)/gamma(m)
necomancer
2018-12-11 20:07:09 +08:00
from scipy.special import loggamma
import numpy as np
def p(n, m):
return np.exp(loggamma(n+1)-loggamma(m+1))

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/515579

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX