哪位大神能帮我看下下面的代码:
#!/usr/bin/env python
# encoding: utf-8
list = []
point = [0,0]
n = 0
x = [2,1,1,2]
for i in x:
if n%4 == 0:
for ii in range(i):
point[1]+=1
list.append(point)
print point
if n%4 == 1:
for ii in range(i):
point[0]-=1
list.append(point)
print point
if n%4 == 2:
for ii in range(i):
point[1]-=1
list.append(point)
print point
if n%4 == 3:
for ii in range(i):
point[0]+=1
list.append(point)
print point
# print point
print n
n+=1
print list
运行的结果为什么是[[1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1]]?
在你的代码中,第n+1
次循环会修改第n
次循环中的point
的引用值。
可以在每次操作完point
后,重新为point
初始化,或者直接用非引用值。
1 #!/usr/bin/env python
2 # encoding: utf-8
3 list = []
4 point = [0,0]
5 n = 0
6 x = [2,1,1,2]
7 for i in x:
8 if n%4 == 0:
9 for ii in range(i):
10 point[1]+=1
11 tmp = point[1]
12 list.append([point[0], tmp])
13 print point
14
15 if n%4 == 1:
16 for ii in range(i):
17 point[0]-=1
18 tmp = point[1]
19 list.append([point[0], tmp])
20 print point
21
22 if n%4 == 2:
23 for ii in range(i):
24 point[1]-=1
25 tmp = point[1]
26 list.append([point[0], tmp])
27 print point
28
29 if n%4 == 3:
30 for ii in range(i):
31 point[0]+=1
32 tmp = point[1]
33 list.append([point[0], tmp])
34 print point
35
36 # print point
37 print n
38 n+=1
请问怎么对point进行初始化呢?
list.append(point)
传递的是point
的引用
改成list.append(type(point)(point))
话说list为什么要取名为list,把__built_in__里的list覆盖掉了