打乱洗牌的字符串

时间:2015-12-26 20:04:22

标签: python python-3.x

了解python中的随机性和随机性是非常有趣的。但是,我使用以下代码对字符串进行了洗牌:

string

现在,我已经改组了字符串,所以我怎样才能解开原来的字符串呢?

2 个答案:

答案 0 :(得分:2)

如果没有原始字符串的痕迹,你真的无法做到这一点。所以,如果你领导原始索引(你可以使用enumerate获得),那么你可以撤消(仍然不是反向)改组:

In [18]: s = "Shuffling in Python"

In [19]: shuffled = random.sample(list(enumerate(s)), len(s))

In [20]: ''.join([e[1] for e in shuffled])
Out[20]: 'igf nfSonhult iPhyn'

In [21]: ''.join(s[e[0]] for e in shuffled)
Out[21]: 'igf nfSonhult iPhyn'

In [22]: ''.join([e[1] for e in sorted(shuffled, key=lambda x:x[0])])
Out[22]: 'Shuffling in Python'

答案 1 :(得分:1)

你不能。原始订单不会被保留,适当的随机改组不是可逆操作。

就像任何随机的字母集合一样,查找具有这些特定字母的其他字词会要求您搜索所有可能的有效字词,并且您可以找到多种解决方案。

并非你需要来取消这些字母。您仍然拥有x中的原始字符串,您从未删除该变量,因此您仍然可以参考原始字符。