Python中列表相“与”时出现的问题

Python中列表相“与”时出现的问题,第1张

python编码中,我们有时希望对两个长度相同的列表进行像“按位与”的 *** 作,但结果并不如我们的预期。
如:

a=[0,0,1,1,1,0]
b=[1,0,1,0,1,0]			# 预期是得到[0,0,1,0,1,0]
e=a and b				# e列表为   [1,0,1,0,1,0]

进行and运算时,我们从最简单的两数相与开始讨论

  1. 两数相与:
    x and y的结果为True的时候,返回的并不是True,而是运算结果的最后一位变量的值。这里是返回y的值。
  2. 列表相与:
    列表list1list2中遍历元素ij。当i and j结果为False的时候,返回的是第一个False的值,如ij都为False那么返回i的值,i为真,j为假,那么返回的是j的值。
    这样看来,一开始的例子运算的结果就可以解释了。

但这样并不能得到我们预期的效果。
可以编码如下:

c=[a[i] & b[i] for i in range(len(a))]
d=[a[i] and b[i] for i in range(len(a))]

cd的运算方式都可以得到正确的结果。
这样的方式在其他数据结构中并不一定成立。如在numpy中的数组np.array支持矩阵之间的and运算,然后返回对应布尔矩阵。pandas中的SeriesDataFrame中也支持相应的布尔索引

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/728319.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-26
下一篇2022-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存