我试图理解一个python函数,它接受一个列表并重新排列列表中的元素

我试图理解一个python函数,它接受一个列表并重新排列列表中的元素,python,Python,我试图理解change+=change>=I在这个python代码中做了什么。这段代码的目的是获取一个列表并返回它,但是要重新排列元素的位置 import random def random_shuffle (lst): len1 = len(lst) for i in range(len1): change = random.randrange(len1 - 1) change += change >= i lst [i],

我试图理解
change+=change>=I
在这个python代码中做了什么。这段代码的目的是获取一个列表并返回它,但是要重新排列元素的位置

import random
def random_shuffle (lst):
    len1 = len(lst)
    for i in range(len1):
        change = random.randrange(len1 - 1)
        change += change >= i
        lst [i], lst[change] = lst[change], lst[i]
    return lst

您可以在Python REPL中轻松地尝试这一点:

>>> 4 + (3>1)
5
>>> 4 + (3>5)
4
看看

编写
change+=change>=i
的更典型方法可能是:

if change >= i:
    change += 1

您可以在Python REPL中轻松地尝试这一点:

>>> 4 + (3>1)
5
>>> 4 + (3>5)
4
看看

编写
change+=change>=i
的更典型方法可能是:

if change >= i:
    change += 1

change>=i
True
还是
False
取决于比较是真还是假

在需要数字的地方使用布尔值时,
True==1
False==0
。根据情况,它可能是
change+=1
change+=0

所以它相当于:

if change >= i:
    change += 1
else:
    change += 0
由于将
0
添加到一个数字没有效果,因此可以进一步简化为

if change >= i:
    change += 1

change>=i
True
还是
False
取决于比较是真还是假

在需要数字的地方使用布尔值时,
True==1
False==0
。根据情况,它可能是
change+=1
change+=0

所以它相当于:

if change >= i:
    change += 1
else:
    change += 0
由于将
0
添加到一个数字没有效果,因此可以进一步简化为

if change >= i:
    change += 1

所以我从i到列表的长度。然后将更改分配给一个介于0和列表长度-1之间的随机数

“>=”的优先级高于“+=”,因此请首先查看“>=”i

因此,如果变化大于i,则返回True

然后看+=,change+=True加1表示更改,change+=False加0表示更改


然后最后一行交换这两个项目。

因此我从i到列表的长度。然后将更改分配给一个介于0和列表长度-1之间的随机数

“>=”的优先级高于“+=”,因此请首先查看“>=”i

因此,如果变化大于i,则返回True

然后看+=,change+=True加1表示更改,change+=False加0表示更改

然后最后一行交换这两个项目