在奇数索引和偶数索引处从字符串生成随机字母

时间:2017-08-14 03:28:40

标签: python python-3.x

两个字符串,如:

import random
consonants = "bcdfghjklmnprstvwz"
vowels = "aeiou"

我希望在偶数索引处得到四个字母,在奇数索引处得到三个字母,如:

ejiguka / agewilu / isavonu (odd indexes(0,2,4,6),even indexes(1,3,5,7))

我试过这个功能,但它不起作用。

random_letter = random.choice(consonants[::2])
random_letter1 = random.choice(vowels[1::2])
random_together = random_letter + random_letter1

我有两个随机字母,例如be,但我想获得ejiguka / agewilu之类的输出。

2 个答案:

答案 0 :(得分:1)

您使用拼接进入了正确的轨道,但您没有正确应用它。

首先初始化一个空列表:

In [134]: x = [None] * 7

现在,使用random.sample分配拼接,以检索唯一的随机字符子集:

In [135]: x[::2] = random.sample(vowels, 4)
     ...: x[1::2] = random.sample(consonants, 3)

加入并打印:

In [136]: ''.join(x)
Out[136]: 'ijepula' 

答案 1 :(得分:0)

您可以创建一个字母列表并将它们连接在一起,如下所示:

str1 = ''.join(random.choice(consonants) if i % 2 else random.choice(vowels) for i in range(7))

您的代码只是从每个列表中获取一个字母,而且只能从切片项中获取。

cons = (random.choice(consonants) for i in range(3))
vwls = (random.choice(vowels) for i in range(4))

''.join(next(cons) if i % 2 else next(vwls) for i in range(7))