使用enumerate选择列表的随机成员

Mer*_*lin -2 python enumerate

让我们说mylist是70个元素的列表,我想从mylist中随机选择0,12,5个元素.我在"rand:"得到语法错误

rand = [0, 12, 5]
LL=[]
for x in enumerate(mylist) if i in rand:
        LL.append(x)        
Run Code Online (Sandbox Code Playgroud)

mgi*_*son 6

为什么不呢:

for i in rand:
   LL.append(mylist[i])
Run Code Online (Sandbox Code Playgroud)

或更好:

LL = [mylist[i] for i in rand]
Run Code Online (Sandbox Code Playgroud)

但请注意,您的代码定义不明确.我想你的尝试是:

LL = [ x for i,x in enumerate(mylist) if i in rand ]
Run Code Online (Sandbox Code Playgroud)

这将起作用,但除非您需要保留原始列表中的顺序,否则不必遍历整个枚举列表.

最后,如果您只想从列表中随机选择N个元素,则random.sample非常适合.

import random
LL = random.sample(mylist,3)
Run Code Online (Sandbox Code Playgroud)