pin*_*aas 5 python scope loops for-loop
不知怎的,这样做之后
list2 = [x for x in range(10)]
list1 = [ x for x in range(10,20)]
for k, list1 in enumerate([list1,list2]):
for number, entry in enumerate(list1):
print number, entry
Run Code Online (Sandbox Code Playgroud)
突然id(list2)==id(list1)
评价为True?究竟发生了什么?当循环运行时,这似乎不是第一个输出符合预期的情况:
0 10,1 1 2,1 12,... 0 0,1 1,2 3,...
第二个虽然给出:
0 0,1 1,2 2 ......
这怎么可能?
只需将代码更改为:
list2 = [x for x in range(10)]
list1 = [ x for x in range(10,20)]
Run Code Online (Sandbox Code Playgroud)
摆脱这种行为.
for k, NEWVAR in enumerate([list1,list2]):
for number, entry in enumerate(list1):
print number, entry
Run Code Online (Sandbox Code Playgroud)
你写:
list1 = [ x for x in range(10,20)]
Run Code Online (Sandbox Code Playgroud)
然后:
for k, list1 in ...
Run Code Online (Sandbox Code Playgroud)
您list1
对两个不同但混合的对象使用相同的名称!没有任何好处可以从中产生.
只需为循环使用不同的名称:
for k, l in enumerate([list1,list2]):
for number, entry in enumerate(l):
Run Code Online (Sandbox Code Playgroud)
请记住,在Python中只有两个范围,粗略地说: