• <em id="ommgs"></em>
    <dd id="ommgs"><center id="ommgs"></center></dd>

    1. <em id="ommgs"><acronym id="ommgs"><u id="ommgs"></u></acronym></em>
      首 頁IT知識庫翔宇問吧收藏內容
      當前位置:翔宇亭IT樂園IT知識庫Python

      Python all()函數

      減小字體 增大字體 作者:本站  來源:本站整理  發布時間:2021-08-03 11:09:32

      Python all()函數是Python的內置函數之一。

      Python all()函數的作用是判斷給定的可迭代對象的所有元素是否都為真(或者可迭代對象是否為空),如果是則all()函數返回True,否則返回False

      在前面的文章中關于Python中bool值進行介紹過:在Python中,任何值為0的數字類型、空的字符串、空的列表、空的元組、空的集合等都為False,值為None或False的對象也是False,其它情況都為True.

      該函數與any()函數具有相似性,讀者可以了解一下any()函數的使用方法。

      但該函數對于空的可迭代對象將返回True

      all()函數的語法格式

      all(iterable)

      參數

      iterable:用于判斷所有元素是否都為真的可迭代對象。

      返回值

      該函數的返回值是邏輯值TrueFalse.

      如果可迭代對象中的所有元素為真或可迭代對象為空則返回True,否則返回False

      該函數等價于下面的函數定義:

      def all(iterable):
          for item in iterable:
              if not item:
                  return False
          return True

      Python all()函數

      all()函數使用示例

      1、可迭代對象為空的情況

      lst = []  #空列表
      print(all(lst))
      t = ()  #空元組
      print(all(t))
      d = {}  #空字典
      print(all(d))
      s = set()  #空集合
      print(all(s))
      st = ''  #空字符串
      print(all(st))

      輸出結果:

      True
      True
      True
      True
      True

      從上面輸出結果可以看出,all()函數對于空的可迭代對象返回True.

      2、all()函數使用示例2

      lst1 = [0, 1, 2, 3]
      print(all(lst1))
      lst2 = [1,2,3,4]
      print(all(lst2))
      lst3 = ['','b','i','y','e','5','u']
      print(all(lst3))
      print(all(lst3[1:]))   #排除第一個元素
      lst4 = ["Python","R","SPSS",None]
      print(all(lst4))
      print(all(lst4[:-1]))  #排除最后一個元素

      輸出結果:

      False
      True
      False
      True
      False
      True

      從上面的輸出結果可以看出,對于包含空字符串0None的可迭代對象,all()函數返回False,否則返回True.

      3、復合的迭代對象

      lst5 = [[],1,2,3]
      lst6 = [(),1,2,3]
      lst7 = [[1,2,None],1,2]
      lst8 =[[],[]]
      print(f"{all(lst5)},{all(lst6)},{all(lst7)},{all(lst8)}")

      輸出結果:

      False,False,True,False

      從上面的例子可以看出,列表中有空的列表,元組的,all()函數返回False,可迭代對象中的子列表中的元素不全是False,且可迭代對象的其它元素不為False時,all()函數返回True.

      4、all()函數用于用戶自定義對象

      在講解bool()函數的用法時說過,在Python3.x中,用戶自定義對象中如果定義了__bool__()函數,則對象的真假由__bool__()函數決定,如果沒定義__bool__()函數,則如果對象中定義了__len__()函數,則對象的真假由__len__()函數決定。對于長度非0的對象返回True,否則返回False.

      如果自定義對象中既沒有定義__boo__()函數,也沒有定義__len__()函數,all()函數返回True.

      (1)定義了__bool__()和__len__()函數

      class Student:
          name = ""
          def __init__(self, name):
              self.name = name

          def __bool__(self):
              print(self.name,"調用__bool__()")
              return bool(self.name)

          def __len__(self):
              print("調用__len__()")
              return len(self.name)

      lst_objs1 = [Student("Wang"),Student("Li")]
      print(all(lst_objs1))
      lst_objs2 = [Student(""),Student("Liu")]
      print(all(lst_objs2))

      輸出結果:

      Wang 調用__bool__()
      Li 調用__bool__()
      True
      調用__bool__()
      False

      從輸出結果中,我們可以得到兩個信息:一是在自定義對象中在既定義了__bool__()函數又定義了__len__()函數時,程序使用__bool__()函數決定對象的真假;二是注意到在lst_objs2中只輸出了一個“ 調用__bool__()”內容,說明當all()函數在確定了某一個元素已經是False時,不再判斷下面的元素。

      (2)只定義__len__()函數

      class Teacher:
          name = ""
          def __init__(self, name):
              self.name = name

          def __len__(self):
              print(f"{self.name}調用__len__()")
              return len(self.name)

      lst_objs1 = [Teacher("Wang"),Teacher("Li")]
      print(all(lst_objs1))
      lst_objs2 = [Teacher(""),Teacher("Liu")]
      print(all(lst_objs2))

      輸出結果:

      Wang調用__len__()
      Li調用__len__()
      True
      調用__len__()
      False

      (3)未定義__len__()和__bool__()函數

      class Department:
          name = ""
          def __init__(self, name):
              self.name = name

      lst_objs1
      = [Department("M"),Department("C")]
      print(all(lst_objs1))
      lst_objs2 = [Department(""),Department("A")]
      print(all(lst_objs2))

      輸出結果:

      True
      True

      從上面的輸出結果可以看出,對于用戶自定義對象,若沒有定義__bool__()函數,也沒有定義__len__()函數的情況下,all()函數一律返回True.

      總結

      all()函數是判斷可迭代對象中的元素中是否都為真值,若可迭代對象中不含0值,空值,False值,None值時,則返回True,否則返回False。空的可迭代對象被認為是真值。未定義__bool__()和__len__()函數時,all()函數也返回True.

      微信搜索“優雅的代碼”關注本站的公眾號,或直接使用微信掃描下面二維碼關注本站公眾號,以獲取最新內容。

      個人成長離不開各位的關注,你的關注就是我繼續前行的動力。

      知識評論評論內容只代表網友觀點,與本站立場無關!

         評論摘要(共 0 條,得分 0 分,平均 0 分) 查看完整評論
      愿您的精彩評論引起共鳴,帶來思考和價值。
      用戶名: 查看更多評論
      分 值:100分 90分 80分 70分 60分 40分 20分
      內 容:
      驗證碼:
      關于本站 | 網站幫助 | 廣告合作 | 網站聲明 | 友情連接 | 網站地圖
      本站部分內容來自互聯網,如有侵權,請來信告之,謝謝!
      Copyright © 2007-2021 biye5u.com. All Rights Reserved.
      japanese日本熟妇photo