Maison > Questions et réponses > le corps du texte
如何从迭代器中随机选取一个元素?
random.choice(generaotr)
会提示 TypeError: object of type 'generator' has no len()
PHPz2017-04-18 09:32:29
Signature: random.choice(seq)
, le paramètre doit être une séquence, convertissez d'abord le générateur en séquence.
random.choice(list(generator))
ringa_lee2017-04-18 09:32:29
Vous pouvez d'abord mettre en cache un certain nombre de valeurs d'itérateur, puis les récupérer de manière aléatoire.
sets = list(zip(range(100),generator()))
choice = random.choice(sets)[1]
Ou randomisez directement un entier puis next() à cette position.
黄舟2017-04-18 09:32:29
La question doit être pensée comme ceci : puisque des itérateurs sont utilisés, pourquoi devons-nous sélectionner des nombres au hasard ? Et si l'itérateur était infini ? Bien sûr, cela peut être converti en liste et discuté séparément