国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Python > 正文

Python all()函數

2023-04-24 19:21:37
字體:
來源:轉載
供稿:網友

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.

上一篇:Python id()函數

下一篇:Python any()函數

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永川市| 临夏市| 五常市| 安徽省| 育儿| 富顺县| 禄丰县| 丰城市| 西盟| 鄯善县| 武宁县| 武夷山市| 周口市| 石门县| 北碚区| 达拉特旗| 郧西县| 隆林| 抚州市| 堆龙德庆县| SHOW| 荆州市| 巧家县| 榆树市| 公安县| 米易县| 高陵县| 千阳县| 石门县| 兴城市| 育儿| 河池市| 衡阳县| 桃江县| 安庆市| 米脂县| 昌都县| 六安市| 郑州市| 蕲春县| 谷城县|