生成随机数作为列表索引时,我应该在哪里减去1?

时间:2014-12-27 09:34:23

标签: python list random

当我想要一个列表的随机项时,我通常会这样做:

import random
random.randint(0, len(array)-1)

(然后将其作为列表的索引)

但是,我想知道执行以下操作是否更有效/更好:

import random
random.randint(1, len(array)) -1

执行时间是否有任何影响,或者更好的做法,一般是使用一个而不是另一个?

3 个答案:

答案 0 :(得分:4)

您可以使用类似范围的random.randrange(..)

import random
random.randrange(len(array))  # OR  random.randrange(0, len(array))

甚至更好,使用更可读的random.choice,它会从序列中返回随机元素:

random.choice(array)

答案 1 :(得分:2)

这个choice存在

:尝试

random.choice(your_list)     # returns a random element from the list

答案 2 :(得分:0)

运行一些测试(循环,使用每种技术生成100,000个长):

方法1(random.randint(1,len(lst)-1)

         14.73
         14.81
         15.04
         14.71
Average: 14.8225

方法2(random.randint(1,len(lst))-1

         14.94
         14.91
         14.85
         14.85
Average: 14.8875

所以他们基本上花了相同的时间 - 差异几乎肯定是随机的 - 链接到我电脑上的其他活动。