在python3中,range
不返回列表,而是迭代器。
这很棒,并且具有一些优点,例如不会立即生成整个列表,而是仅在需要时才生成元素。
现在假设我想要一个随机顺序的范围(基本上是一个随机的范围)。在python2中,我只是做:
my_list = range(n)
np.random.shuffle(my_list)
这在python3中不起作用。一旦解决方案是生成实际列表,然后改组(然后将与python2相同)
my_list = list(range(n))
np.random.shuffle(my_list)
但是使用这种策略会失去迭代器的优势。
问题:如何创建随机有序范围迭代器,该迭代器仅在被请求时才提供索引?
最佳答案
shuffled
模块呢?
pip3 install shuffled
>>> import shuffled
>>> my_list=shuffled.Shuffled(16)
>>> for i in my_list: print(i)
...
2
14
15
1
4
5
3
0
7
10
11
6
8
9
12
13
>>> my_list=shuffled.Shuffled(16)
>>> for i in my_list: print(i)
...
0
1
2
10
7
4
13
6
3
11
8
9
5
14
15
12
关于python - 洗牌范围迭代器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50833256/