Python 如何从列表中选择一个随机元素,然后在列表中找到它的索引?

Python 如何从列表中选择一个随机元素,然后在列表中找到它的索引?,python,Python,我有一个名称列表,使用random.choice(),我可以从列表中获得一个随机元素。现在我试图找出给定元素在列表中的索引。这就是我到目前为止所做的: import random x = ['Jess','Jack','Mary','Sophia','Karen','Addison','Joseph','Eric','Ilona','Jason'] y = random.choice(x) print(y) 您可以使用: 这将返回列表中找到匹配项的第一个索引。但是,如果列表中有重复项,则不会

我有一个名称列表,使用
random.choice()
,我可以从列表中获得一个随机元素。现在我试图找出给定元素在列表中的索引。这就是我到目前为止所做的:

import random

x = ['Jess','Jack','Mary','Sophia','Karen','Addison','Joseph','Eric','Ilona','Jason']
y = random.choice(x)
print(y)
您可以使用:

这将返回列表中找到匹配项的第一个索引。但是,如果列表中有重复项,则不会返回正确的索引


处理此问题的更好方法是,如果有重复项,则将索引而不是值随机化。因为您将始终存储所引用的正确索引,而不是第一次出现的索引

y = random.randint(0, len(x))
#3

x[y]

#Sophia

您可以给出
y=x.index(random.choice(x))
这将把索引分配给您可以使用的
y

随机导入
x=['Jess','Jack','Mary','Sophia','Karen','Addison','Joseph','Eric','Ilona','Jason']
i=随机。随机范围(len(x))
打印(i,x[i])
示例输出:

7埃里克


这可以通过两种方式实现

方法1
  • 找到列表的长度(n),然后从0-n中选择一个随机整数作为K
  • 返回列表中第k个索引处的元素和索引k
  • 方法2 使用
    random.choice
    选择随机元素,然后使用
    list.index
    查找索引

    value= random.choice(x)
    index= x.index(value)
    
    
    index = random.choice(range(len(x)))
    value = x[index]
    
    注1:当列表中存在重复元素时,此操作不起作用

    最好的方法是方法1


    也可以使用random.choice获取索引

    value= random.choice(x)
    index= x.index(value)
    
    
    index = random.choice(range(len(x)))
    value = x[index]
    

    但与随机相比,这有点慢。randange

    x.index(y)将为您提供索引。列表是否包含重复项?是的,这很重要<代码>索引仅返回列表中的第一个匹配项。列表。索引(元素、开始、结束)是命令。因此,如果您不提供开始或结束,那么它将找到第一个实例。如果有重复项,除非您指定开始位置,否则将找不到下一个,这是否回答了您的问题?请看下面的答案:你的答案与@packetlos有什么不同?我想我们两人都同时回答了。与公认的答案相比,这增加了什么新信息?