我想使用 Python 根据给定的键随机重新排列字符串的各个部分。我也想用相同的 key 恢复原始字符串:
def rearrange(key, data):
pass
def restore(key, rearranged_data):
pass
效率并不重要。有什么想法吗?
编辑:
- 可以假定键是可哈希的,但可以是多种类型
- definition of section for ignacio
最佳答案
使用 random.shuffle
并将 key 作为种子:
import random
def rearrange(key, data):
random.seed(key)
d = list(data)
random.shuffle(d)
return ''.join(d)
def restore(key, rearranged_data):
l = len(rearranged_data)
random.seed(key)
d = range(l)
random.shuffle(d)
s = [None] * l
for i in range(l):
s[d[i]] = rearranged_data[i]
return ''.join(s)
x = rearrange(42, 'Hello, world!')
print x
print restore(42, x)
输出:
oelwrd!, llHo
Hello, world!
关于python - 使用键重新排列字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2345628/