在random.choices()中使用索引[0]

时间:2018-12-19 19:14:34

标签: python random

[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)

1 个答案:

答案 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 +。