random iteration in Python

后端 未结 6 2111
南方客
南方客 2020-12-05 07:02

When you want to iterate sequentially over a list of numbers you will write:

for i in range(1000):
  # do something with i

But what if you

6条回答
  •  悲&欢浪女
    2020-12-05 07:35

    You can use random.shuffle() to, well, shuffle a list:

    import random
    
    r = list(range(1000))
    random.shuffle(r)
    for i in r:
      # do something with i
    

    By the way, in many cases where you'd use a for loop over a range of integers in other programming languages, you can directly describe the "thing" you want to iterate in Python.
    For example, if you want to use the values of i to access elements of a list, you should better shuffle the list directly:

    lst = [1970, 1991, 2012]
    random.shuffle(lst)
    for x in lst:
      print x
    

    NOTE: You should bear the following warning in mind when using random.shuffle() (taken from the docs:

    Note that for even rather small len(x), the total number of permutations of x is larger than the period of most random number generators; this implies that most permutations of a long sequence can never be generated.

提交回复
热议问题