‘and’ 和‘&’在python lists与numpy array中的不同

 mylist1 = [True,  True,  True,  False,  True]
    mylist2 = [False, True, False,  True, False]  

    >>> len(mylist1) == len(mylist2)
    True

    # ---- Example 1 ----
    >>>mylist1 and mylist2 
    [False, True, False, True, False]
    #非空列表代表True,第一个list非空是True,所以and操作的结果是与第二个列表相同

    # ---- Example 2 ----
    >>>mylist1 & mylist2 
    *** TypeError: unsupported operand type(s) for &: 'list' and 'list'
    #因为lists可以包含任意类型的元素,所以不能按位任意组合

    # ---- Example 3 ----
    >>>import numpy as np    >>> np.array(mylist1) and np.array(mylist2) 
    *** ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
    #numpy是用来进行向量运算的,它没有bool值

     # ---- Example 4 ----
    >>> np.array(mylist1) & np.array(mylist2) 
    array([False,  True, False, False, False], dtype=bool)
    #矢量位操作

and意味着整体进行与运算(空列表-False,非空类标-True)

&意味着每一条数据进行与运算(在numpy、pandas中)

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论