Rumah > Soal Jawab > teks badan
如何从迭代器中随机选取一个元素?
random.choice(generaotr)
会提示 TypeError: object of type 'generator' has no len()
PHPz2017-04-18 09:32:29
Signature: random.choice(seq)
, parameter hendaklah satu jujukan, mula-mula tukar penjana kepada jujukan.
random.choice(list(generator))
ringa_lee2017-04-18 09:32:29
Anda boleh cache beberapa nilai iterator dahulu dan kemudian ambilnya secara rawak.
sets = list(zip(range(100),generator()))
choice = random.choice(sets)[1]
Atau rawak terus integer dan kemudian seterusnya() ke kedudukan itu.
黄舟2017-04-18 09:32:29
Persoalannya harus difikirkan seperti ini: Memandangkan iterator digunakan, mengapa kita perlu memilih nombor secara rawak? Bagaimana jika iterator tidak terhingga? Sudah tentu, ia boleh ditukar menjadi senarai dan dibincangkan secara berasingan