-2

假设 mylist 是 70 个元素的列表,我想从 mylist 中随机选择 0、12、5 个元素。我在“rand:”处收到语法错误

rand = [0, 12, 5]
LL=[]
for x in enumerate(mylist) if i in rand:
        LL.append(x)        
4

3 回答 3

6

为什么不只是:

for i in rand:
   LL.append(mylist[i])

或更好:

LL = [mylist[i] for i in rand]

但请注意,您的代码定义不明确。我认为您正在尝试的是:

LL = [ x for i,x in enumerate(mylist) if i in rand ]

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

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

import random
LL = random.sample(mylist,3)
于 2012-07-16T17:42:58.717 回答
2

另外一个选项:

from operator import itemgetter
LL = list(itemgetter(*rand)(mylist))
于 2012-07-16T17:47:26.283 回答
1

其他选项:

# just pick the items
from operator import itemgetter
print list(itemgetter(*rand)(mylist))

# pick 3 **actual** unique random items
from random import shuffle
shuffle(mylist)
print mylist[:3]

# Or as I've been reminded, and it preserves order of mylist (kudos @mgilson)
from random import sample
sample(mylist, 3)
于 2012-07-16T17:51:17.560 回答