84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
如何从迭代器中随机选取一个元素?
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()到那个位置。
问题应该这样想:既然使用迭代器,为何又要随机取数?如果迭代器是无限大呢?当然,可转换成列表另讲