Pic*_*ard 3 python list-comprehension list python-2.7
我注意到(对我来说)非常奇怪的行为,我不明白:我有一个列表和一个numpy数组都有二进制值我想检查真正的积极因素(两个= = 1同时).
import numpy as np
a = [0,0,1,1]
b = np.array([1,0,1,0])
for a,b in zip(a,b):
if a==1 and b==1:
print "cool"
print a,b
Run Code Online (Sandbox Code Playgroud)
现在疯狂开始了.a和b不再是列表或numpy数组,而是整数和numpy浮点数?这究竟是怎么发生的?谢谢你的帮助!
Mos*_*oye 16
zip
没有改变你的清单.在分配名称a
和b
循环变量时,您丢失了对列表的初始引用:
for a, b in zip(a,b):
# ^ ^
Run Code Online (Sandbox Code Playgroud)
一个简单的解决方法是更改这些名称,i
并且j
:
for i, j in zip(a,b):
Run Code Online (Sandbox Code Playgroud)
使用Python时要记住的一件事是名称绑定到对象,因此可以解除绑定甚至反弹.没有名字是为了保持.一旦你更改了一个名称引用的对象,名称就会开始引用新对象.
另一方面,for
循环将迭代中的对象分配给提供的名称,类似于常规赋值,但重复.所以,你得到的价值a
和b
在年底for
环是那些在最后一次迭代完成两次分配的.
请记住这些.