Maison  >  Questions et réponses  >  le corps du texte

Problème Python 3.5 random.shuffle

Lors de la génération d'une liste aléatoire, la fonction random.shuffle() est utilisée. Les questions suivantes se posent à propos de l'appel de cette fonction :
Si une liste est explicitement définie, comme li = [], la fonction shuffle peut générer la liste aléatoire. Le résultat :
Mais si list(range(n)) est utilisé comme paramètre de lecture aléatoire, None sera renvoyé comme le montre la figure :

.

Que se passe-t-il ? Ils appartiennent tous à la catégorie liste

世界只因有你世界只因有你2711 Il y a quelques jours1210

répondre à tous(2)je répondrai

  • 黄舟

    黄舟2017-05-18 10:50:52

    >>> help(random.shuffle)
    Help on method shuffle in module random:
    
    shuffle(x, random=None) method of random.Random instance
        Shuffle list x in place, and return None.
    
        Optional argument random is a 0-argument function returning a
        random float in [0.0, 1.0); if it is the default None, the
        standard random.random will be used.

    Il est mentionné dans le document que si un list对象, 则直接作用鱼list objet est donné

    >>> a = list(range(20))
    >>> a
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
    >>> random.shuffle(a)
    
    >>> a  # a的值已改变
    [1, 6, 3, 15, 0, 5, 19, 10, 7, 18, 4, 2, 12, 14, 8, 16, 9, 11, 13, 17]
    >>>

    répondre
    0
  • 天蓬老师

    天蓬老师2017-05-18 10:50:52

    Parce que random.shuffle() agira directement sur list lui-même et ne renverra aucune valeur, donc le résultat de votre première instruction sera None But in < When code. >random.shuffle(li), vous imprimez la liste li, qui elle-même a été modifiée. Si tu écris comme ça random.shuffle()会直接作用于list本身,而不会返回任何值,所以你第一个语句的结果会是None.但是在random.shuffle(li)的时候,你打印的是li这个列表,它本身就被改变了。如果你这样写

    li = random.shuffle(li)

    那么一样会返回None.所以想要得到list(range(20))shuffle操作过后的值,需要先给它一个变量名,在被shuffle

    li = random.shuffle(li)🎜
    🎜Ensuite, il retournera toujours Aucun Donc, si vous souhaitez obtenir la valeur de list(range(20)) après avoir été utilisé par shuffle, vous devez d'abord lui donner un nom de variable auquel vous ne pouvez accéder qu'après avoir été utilisé avec shuffle. 🎜

    répondre
    0
  • Annulerrépondre