Python两个list互换,两种不同的操作结果有差异,原因是什么呢?

查看:151
本文介绍了Python两个list互换,两种不同的操作结果有差异,原因是什么呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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;

第一种操作是这样的,和预期不太相符:

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]

第二种加入一个中间值来暂时存储list b ,结果是这样的:

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]

这个问题已被关闭,原因:问题质量差 - 问题太水、伸手党

解决方案

其实不太明白你说得"结果有差异"是指什么, 你这个输出不是很正常的么?
xor(a,c), 将列表a的每个元素, 和列表c的每个元素取异或结果, 导致列表变成结果a变成[0, 0, 0, 0, 0, 1, 1, 1, 1]
xor函数在修改列表a的同时, 还顺带return了一个列表a并且赋值给b, 这样子 b和a不是同一样的列表么?

而你下面的"中间变量", 只是存了b之前的值而已, 如果你想说用第一种方法达到第二种方法的效果, 那你可以不要赋值给b, 直接替换

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

这篇关于Python两个list互换,两种不同的操作结果有差异,原因是什么呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆