Python 在random.choices()中使用索引[0]
在Python 在random.choices()中使用索引[0],python,random,Python,Random,在random.choices()中使用[0]的目的是什么?[0]是否参考了下面示例代码中的列表索引或其子列表索引?如果我使用[0],我会从列表中获得一个随机单词,这是期望的结果,但是如果我省略[0],它会给出随机子列表及其所有元素 为什么这两种情况的结果不同 如果我尝试[1]而不是[0],代码会给出 索引错误:索引超出范围 但如果我使用[0]或[-1],则代码会给出所需的结果 import random Animals = ["Cat", "Dog", "Lion", "Tiger", "E
random.choices()
中使用[0]
的目的是什么?[0]
是否参考了下面示例代码中的列表索引或其子列表索引?如果我使用[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)
您使用的是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),对吗
顺便说一句,是Python 3.6+。您使用的是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),对吗
顺便说一句,是Python 3.6+。你的问题很不清楚。显然,做两件不同的事情会给你带来两种不同的结果,为什么你会期望相反的结果呢?你的问题很不清楚。显然,做两件不同的事情会得到两种不同的结果,为什么你会期望其他结果呢?为了澄清@gurpret:[-1]
是最后一个元素的索引。因为只有一个元素,所以第一个元素也是最后一个元素。感谢所有人,特别是@Felix指出了random.choice()和random.choices()之间的区别,其中random.choice()返回单个元素,random.choices()返回元素列表。要澄清@Gurpreet:[-1]
是最后一个元素的索引。因为只有一个元素,所以第一个元素也是最后一个元素。感谢all,尤其是@Felix,为我指出了random.choice()和random.choices()之间的区别,其中random.choice()返回单个元素,random.choices()返回元素列表。