
题目的意思就是按手机的九宫格输入法编译数字,然后把输入的数字的笛卡尔乘积对应的字符串输出。
就是输入23,2对应的a,b,c。3对应的d,e,f,所以输出结果是ad,ae,af,bd,be,bf,cd,ce,cf。
题目很简单,解法也很容易,关键是遇到个很奇怪的问题

这个是没有问题的代码,不过问题就出在红框部分
如果把list1,list3 = list3,[] 修改为list1 = list3,那么代码会进入无限循环,而且list1会和list3绑定

这个图打印的内容是list1,按修改后的代码来看
第一遍循环后list1是['a','b','c'],list2,list3是[]
第二遍循环后list1是[ad,ae,af,bd,be,bf,cd,ce,cf],list2是['d','e','f'],list3是[ad,ae,af,bd,be,bf,cd,ce,cf]
第三次循环的时候list1是[ad,ae,af,bd,be,bf,cd,ce,cf],list2是['g','h','i'],list3应该是按图片中打印出来的内容往后添加
所以问题就来了,我修改的内容是list3的内容,为什么list1的内容同时被修改了?
我之前也遇到过,不过当时没太注意,就是两个变量用等号赋值后,只要修改其中一个,就会同时修改两个变量,这到底是个什么问题?我之前其他语言从来没有遇到过,求解释