如何从迭代器中随机选取一个元素?
random.choice(generaotr) 会提示 TypeError: object of type 'generator' has no len()
random.choice(generaotr)
TypeError: object of type 'generator' has no len()
闭关修行中......
Signature: random.choice(seq),參數應該是一個序列,先把 generator 轉為序列。
Signature: random.choice(seq)
random.choice(list(generator))
可以先快取一定數量的迭代器的值,然後隨機抓取。
sets = list(zip(range(100),generator())) choice = random.choice(sets)[1]
或直接隨機一個整數,然後一直next()到那個位置。
問題應該這樣想:既然使用迭代器,為何要隨機取數?如果迭代器是無限大呢?當然,可轉換成列表另講
Signature: random.choice(seq)
,參數應該是一個序列,先把 generator 轉為序列。可以先快取一定數量的迭代器的值,然後隨機抓取。
或直接隨機一個整數,然後一直next()到那個位置。
問題應該這樣想:既然使用迭代器,為何要隨機取數?如果迭代器是無限大呢?當然,可轉換成列表另講