我正在用Python制作子手游戏,我了解如何从列表中随机选择一个项目,但是我想知道是否有一种方法可以从总体上随机选择列表。
例如,我有两个列表,list1和list2 有没有一种方法可以在list1和list2之间随机选择,然后从随机选择的列表中随机选择一个单词。
我希望这是有道理的
答案 0 :(得分:6)
您可以两次使用random.choice:
import random
first = ['one', 'word']
second = ['two', 'more', 'and']
selected = random.choice(random.choice([first, second]))
print(selected)
输出
word
答案 1 :(得分:2)
import random
# Create a list of your lists
list_of_lists = [lists1, list2, list3]
# Select a random list from your list of lists
random_list = random.choice(list_of_lists)
# Select a random word from the randomly selected list
random_word = random.choice(random_list)
答案 2 :(得分:0)
您可以使用random.choice
选择一个随机列表,然后再次使用random.choice
从该列表中选择一个值:
import random
list1 = ['1','2','3']
list2 = ['4','5','6']
word = random.choice(random.choice([list1, list2]))
答案 3 :(得分:0)
如果其他答案覆盖了两个列表的情况。
如果您有一个任意嵌套的,可能是不规则的列表(或序列),则可以编写一个递归函数。
from collections import Sequence
import random
def go_deeper(x):
return (isinstance(x, Sequence) and not
isinstance(x, (str, bytes))) # and other sequence types you wish to exclude
def select(candidate):
if go_deeper(candidate):
return select(random.choice(candidate))
return candidate
演示:
>>> l = ['foo', 'bar']
>>> select(l)
'bar'
>>>
>>> l = [[[(0,)]]]
>>> select(l)
0
>>>
>>> l = [1, 2, [3, 4, [5]], [[6, [7, 8]], 9]]
>>> select(l)
9
>>> select(l)
1
>>> select(l)
2