Python中遇到的问题
1.列表的初始化
当初始化一个n×n的列表时不能使用如下方法,
In [1]: l=[[0]*3]*3 #如此初始化会导致其它行仅是第一行的引用而不是copy
In [2]: l
Out[2]: [[0, 0, 0], [0, 0, 0], [0, 0, 0]
In [3]: l[0][0]=1 #改变其中一行的某个元素
In [4]: l
Out[4]: [[1, 0, 0], [1, 0, 0], [1, 0, 0]] #其他行跟着改变
正确的方法应该如下
In [5]: l=[[0 for _ in range(3)] for _ in range(3)] #或者l=[[0]*3 for _ in range(3)]
In [6]: l
Out[6]: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
In [7]: l[0][0]=1
In [8]: l
Out[8]: [[1, 0, 0], [0, 0, 0], [0, 0, 0]]
2.a is b与a==b 的区别
a='vhcffh.com'
b='vhcffh.com'
a==b # True,a和b对应实例的内容是相同的
a is b # False,a和b指向不同的实例
b=a
a is b # True,a和b指向同一个实例
# 好奇怪啊!!!
In [43]: a='vhcffh.com'
In [44]: b='vhcffh.com'
In [45]: a==b
Out[45]: True
In [46]: a is b
Out[46]: False
In [47]: a='abcde'
In [48]: b='abcde'
In [49]: a == b
Out[49]: True
In [50]: a is b
Out[50]: True