让我们说mylist是70个元素的列表,我想从mylist中随机选择0,12,5个元素。我在“rand:”
时遇到语法错误rand = [0, 12, 5]
LL=[]
for x in enumerate(mylist) if i in rand:
LL.append(x)
答案 0 :(得分: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)
答案 1 :(得分:2)
另一种选择:
from operator import itemgetter
LL = list(itemgetter(*rand)(mylist))
答案 2 :(得分: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)