如何从多个列表字符串中随机创建字符串

时间:2018-04-04 07:10:22

标签: python python-3.x

我无法弄清楚如何随机生成字符串。

import random之前创建一组list之前,我目前正在使用choiceint = random.randint(1,X)。除此之外,我被困住了。

我想让代码做的是从两个列表中选择字符串,然后创建一个新字符串。

例如list1 = ["bannana flavour"] list2 = ["milk"]

然后它会得到“香蕉味”和“牛奶”并制作“香蕉味牛奶”。

这会从较大的池中选择以生成字符串,但我对如何生成半随机字符串一无所知。

我不知道这是否可以实现,但我们的想法是从列表中的选项中生成一个项目,然后将其放在另一个列表中。

如果这是不可能的,或者在没有大量非用户友好代码的情况下是不可能的,我想知道,虽然它是不利的,但我确实可以选择使用random.randint(1,X)然后列出所有可能的组合random.randint = 1:

1 个答案:

答案 0 :(得分:0)

Random有方法从列表中获取1个或多个东西,有/没有重复:

要获得两个列表之间的所有组合,您不需要任何随机性,您可以使用列表推导来获得所有可能性。如果你有两个dozends选项列表,那么生成所有组合是不明智的,只需从每个列表中抽取一个并返回该单个组合 - 需要更少的空间来存储它。

import random 

def getAllPossibleWins(to,co):
    """Create all combinations of t and c as list of strings"""
    return [f'{c} {t}' for t in to for c in co] 

def getWin():
    """Returns a string with a randomized win."""
    toys = ['cow','hare','car','plane']  # 1000 options
    cols = ['red','green','blue']        # 1000 options

    # instead of creating 1000000 combinations and draw once from it, draw from 1000 twice
    return f'You win a {random.choice(cols)} {random.choice(toys)}.'

print(getWin())
print(getWin())
print(getWin())

print(getAllPossibleWins(toys,cols))

输出:

You win a blue plane. 
You win a red car. 
You win a green cow.

['red cow', 'green cow', 'blue cow', 'red hare', 'green hare', 'blue hare', 'red car', 
 'green car', 'blue car', 'red plane', 'green plane', 'blue plane']