Random.choice()与random.randint的区别?

问题描述 投票:2回答:3

我正在上一门课程,但是后来我遇到了两个类似的“工具”。是什么让您选择一个呢?这是两个示例,结果是相同的。

公共代码:

import random

messages = ['It is certain',
    'It is decidedly so',
    'Yes definitely',
    'Reply hazy try again',
    'Ask again later',
    'Concentrate and ask again',
    'My reply is no',
    'Outlook not so good',
    'Very doubtful']

例1:

print(messages[random.randint(0, len(messages) - 1)])

例2:

print(random.choice(messages))
python
3个回答
1
投票

两者都在做,

查看此:

>>> import dis
>>> M = [1,2,3]
>>> def foo(M): random.choice(M)
... 
>>> def foo1(M): M[random.randint(0, len(M) - 1)]
... 
>>> dis.dis(foo)
  1           0 LOAD_GLOBAL              0 (random)
              2 LOAD_ATTR                1 (choice)
              4 LOAD_FAST                0 (M)
              6 CALL_FUNCTION            1
              8 POP_TOP
             10 LOAD_CONST               0 (None)
             12 RETURN_VALUE
>>> dis.dis(foo1)
  1           0 LOAD_FAST                0 (M)
              2 LOAD_GLOBAL              0 (random)
              4 LOAD_ATTR                1 (randint)
              6 LOAD_CONST               1 (0)
              8 LOAD_GLOBAL              2 (len)
             10 LOAD_FAST                0 (M)
             12 CALL_FUNCTION            1
             14 LOAD_CONST               2 (1)
             16 BINARY_SUBTRACT
             18 CALL_FUNCTION            2
             20 BINARY_SUBSCR
             22 POP_TOP
             24 LOAD_CONST               0 (None)
             26 RETURN_VALUE

便利性可能是他们之间选择的一个因素。


0
投票

它只取决于偏好。如果您喜欢EX:1,那么就去做,反之亦然。但是当涉及到其他人阅读时。我希望您使用Ex:2,这对我和其他人来说非常容易...您也可能在一两周后再使用它,可能一分钟会卡住以查看您的操作。 :D希望有帮助。继续编码! 👍


0
投票

在大多数编程语言中,通常有很多方法可以做相同的事情,并且可能归结为个人喜好或编码风格。

在您的特定情况下,如果您需要做的只是收到一条随机消息,那么两种方法都同样有效,并且您必须根据自己认为对其他人来说更易于阅读和维护的方式进行选择,以及未来的你。

© www.soinside.com 2019 - 2024. All rights reserved.