做了这些之后
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
突然id(list2)==id(list1)
计算为真?到底发生了什么?循环运行时,第一个输出似乎与预期不符:
0 10,1 11,2 12,…0,1 2,2 3,。。。你知道吗
第二个结果是:
0 0,1 1,2 2。。。你知道吗
这怎么可能?你知道吗
只需将代码更改为:
list2 = [x for x in range(10)]
list1 = [ x for x in range(10,20)]
摆脱这种行为。你知道吗
for k, NEWVAR in enumerate([list1,list2]):
for number, entry in enumerate(list1):
print number, entry
你写道:
然后:
您对两个不同但混合的对象使用相同的名称
list1
!不会有什么好结果的。你知道吗只需为循环使用不同的名称:
请记住,在Python中,粗略地说,只有两个作用域:
在for循环中,最后一个赋值给
list1
的值是list2
,这就是等式成立的原因您希望for循环中的变量被限制在循环中,但事实并非如此。例如:
输出:
您正在for循环中重新分配
list1
:这意味着在上一次迭代中,您隐式地执行
list1 = list2
从docs
相关问题 更多 >
编程相关推荐