在[0]
中使用random.choices()
的目的是什么?在下面的示例代码中,[0]
是否引用了Lists
或其子列表的索引?如果使用[0]
,则会从列表中获得单个随机词,这是理想的结果,但是如果省略[0]
,它将给出具有其所有元素的随机子列表。>
为什么这两种情况给出的结果不同?
如果我尝试使用[1]
而不是[0]
,则代码会给出
索引错误:索引超出范围
但是,如果我使用[0]
或[-1]
,代码将提供所需的结果。
import random
Animals = ["Cat", "Dog", "Lion", "Tiger", "Elephant"]
Fruits = ["Apple", "Orange", "Banana", "Mango", "Pineapple"]
Vegetables = ["Tomato", "Potato", "Onion", "Brinjal", "Peas"]
Lists = [Animals, Fruits, Vegetables]
word = random.choice(random.choices(Lists)[0])
print(word)
答案 0 :(得分:2)
您使用的是random.choices
而不是random.choice
,它返回一个列表,其中包含单个元素而不是元素本身。看到这里:
In [3]: random.choices("abc")
Out[3]: ['a']
In [4]: random.choice("abc")
Out[4]: 'b'
在其上调用[0]
返回该元素,而[1]
超出范围,因为只有一个元素。您可能想使用random.choice
(不带s),对吧?
顺便说一句,random.choices
是Python 3.6 +。