随机随机播放一个单词中的2个字母

时间:2017-07-10 02:05:00

标签: python python-3.x

有可能以随机的方式每两个字符洗一个字吗? 与hello world更改为ehllo owlrdhello wolrdehll owolrd一样。

我无法获得以下结果:olleh dlrowlleho wodlr

2 个答案:

答案 0 :(得分:4)

是的,将您的字符串放在一些可变数据结构中,如cross validation。然后一个简单的算法是从第二项开始迭代,然后随机交换:

list

所以,例如:

>>> def shuffle_by_two(word):
...     wordl = list(word)
...     for i in range(1, len(word), 2):
...         if random.randint(0, 1):
...             wordl[i-1], wordl[i] = wordl[i], wordl[i-1]
...     return ''.join(wordl)
...

答案 1 :(得分:3)

代码

分解两对,样本和重组:

from random import sample

s = 'hello world'
twos = [s[i:i+2] for i in range(0, len(s), 2)] # Step 1
twos = ''.join([''.join(sample(two, len(two))) for two in twos]) # Step 2

print(twos)
ehll oowrld

操作实例

第1步使用列表理解,基本上是一个精简的for循环。指定 range(0, len(s), 2)遍历步长为2的对象。最好的 容易可视化的方法是将i设置为等于其渐进值: s[0:0+2]将为您提供'he',依此类推。步骤1的结果是 ['he', 'll', 'o ', 'wo', 'rl', 'd']

步骤2的内部部分也使用列表推导来迭代每个 在步骤1中建立的对。for two in twos表示执行操作 对于上一步中建立的列表twos中的每个元素。您可以将two的每个实例替换为您喜欢的任何字词,例如pair(只是不要使用keyword)。然后使用''.join()将破碎的字符串连接在一起。

注意:这会将空格视为涉及改组的字符。