Lorsque deux listes Python sont échangées, les résultats des deux opérations différentes sont différents. Quelle en est la raison ?
仅有的幸福
仅有的幸福 2017-05-24 11:35:35
0
3
716
a=[1,1,1,1,1,1,1,1,1]
b=[0,0,0,0,0,0,0,0,0]
c=[1,1,1,1,1,0,0,0,0]

def xor(a,b):
    for i in range(len(a)):
        a[i]=a[i]^b[i]
    return a;

La première opération se déroule ainsi, ce qui n'est pas tout à fait conforme aux attentes :

b=xor(a,c)
b,a=a,b

a=[0, 0, 0, 0, 0, 1, 1, 1, 1] b=[0, 0, 0, 0, 0, 1, 1, 1, 1]

La deuxième méthode consiste à ajouter une valeur intermédiaire pour stocker temporairement la liste b. Le résultat est le suivant :

mid=b
b=xor(a,c)
a=mid

a=[0, 0, 0, 0, 0, 0, 0, 0, 0] b=[0, 0, 0, 0, 0, 1, 1, 1, 1]

仅有的幸福
仅有的幸福

répondre à tous(3)
淡淡烟草味

En fait, je ne comprends pas très bien ce que vous entendez par « différence dans les résultats ». Votre sortie n'est-elle pas très normale ?
xor(a,c), 将列表a的每个元素, 和列表c的每个元素取异或结果, 导致列表变成结果a变成[0, 0, 0, 0, 0, 1, 1, 1, 1]
Lors de la modification de la liste a, la fonction xor renvoie également une liste a et l'attribue à b. de cette façon, b et a ne sont-ils pas la même liste

?

La "variable intermédiaire" ci-dessous stocke simplement la valeur précédente de b. Si vous souhaitez utiliser la première méthode pour obtenir l'effet de la deuxième méthode, vous pouvez la remplacer directement au lieu de l'attribuer à b

.
xor(a,c)
b,a=a,b
print a, b
大家讲道理

La première méthode consiste à changer la valeur de b, puis à échanger a et b. La deuxième méthode consiste à définir une nouvelle valeur mid, puis à modifier la valeur de b, puis à attribuer mid à a
.

Ce résultat est correct, quel est le problème ?

伊谢尔伦
def xor(a,b):
    for i in range(len(a)):
        a[i]=a[i]^b[i]
    return a;

L'essence de cette fonction est de renvoyer a, il peut y avoir des modifications au milieu, et puis

print id(a)
print id(b)
b=xor(a,c)  # <-- 就是 b==a
print id(a) == id(b)  # <-- 调换之后应该相等了
b,a=a,b  # <-- 这里两个都是指向同一个东西了 

S'il n'y a que deux échanges :

a, b = b, a  # <-- 这样就好了
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!