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]
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
.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 ?.
L'essence de cette fonction est de renvoyer a, il peut y avoir des modifications au milieu, et puis
S'il n'y a que deux échanges :