mylist が 70 個の要素のリストであるとしましょう。mylist から 0,12,5 個の要素をランダムに選択したいと思います。「rand:」で構文エラーが発生します。
rand = [0, 12, 5]
LL=[]
for x in enumerate(mylist) if i in rand:
LL.append(x)
それだけではない理由:
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)
別のオプション:
from operator import itemgetter
LL = list(itemgetter(*rand)(mylist))
別のオプション:
# 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)