第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python的任意函數(shù)和所有函數(shù)是如何工作的?

Python的任意函數(shù)和所有函數(shù)是如何工作的?

明月笑刀無情 2019-06-29 17:41:45
Python的任意函數(shù)和所有函數(shù)是如何工作的?我想弄清楚any()和all()Python內(nèi)置函數(shù)可以工作。我正在嘗試比較元組,以便如果任何值不同,它就會返回True如果它們都是一樣的,它就會回來False..在這種情況下,他們?nèi)绾畏祷豙假,假]?d是defaultdict(list).print d['Drd2']# [[1, 5, 0], [1, 6, 0]]print list(zip(*d['Drd2']))# [(1, 1), (5, 6), (0, 0)]print [any(x) and not all(x) for x in zip(*d['Drd2'])]# [False, False, False]據(jù)我所知,這應該是# [False, True, False]因為(1,1)是相同的,(5,6)是不同的,而(0,0)是相同的。為什么對所有的元組都要評估為false?
查看完整描述

5 回答

?
Helenr

TA貢獻1780條經(jīng)驗 獲得超4個贊

你可以粗略地想到anyall作為一系列邏輯orand分別為操作符。

任何

any會回來True什么時候至少有一個元素是特魯西。讀到真值檢驗

all會回來True只有當所有元素是真心實意的。

真值表

+-----------------------------------------+---------+---------+
|                                         |   any   |   all   |
+-----------------------------------------+---------+---------+
| All Truthy values                       |  True   |  True   |
+-----------------------------------------+---------+---------+
| All Falsy values                        |  False  |  False  |
+-----------------------------------------+---------+---------+
| One Truthy value (all others are Falsy) |  True   |  False  |
+-----------------------------------------+---------+---------+
| One Falsy value (all others are Truthy) |  True   |  False  |
+-----------------------------------------+---------+---------+
| Empty Iterable                          |  False  |  True   |
+-----------------------------------------+---------+---------+

附注1:在正式文檔中解釋了空的迭代情況,如下所示

any

回歸True如果可迭代的任何元素為真。如果可迭代為空,則返回False

因為沒有一個元素是真的,所以它返回False在這種情況下。

all

回歸True如果可迭代的所有元素都是真的(或者如果可迭代是空的).

因為沒有一個元素是false,所以它返回True在這種情況下。


附注2:

還有一件重要的事要知道anyall是,它會短路的執(zhí)行,瞬間他們知道結(jié)果。優(yōu)點是,不需要消耗整個可迭代性。例如,

>>> multiples_of_6 = (not (i % 6) for i in range(1, 10))>>> any(multiples_of_6)True>>> list(multiples_of_6)[False, False, False]

這里,(not (i % 6) for i in range(1, 10))是一個生成器表達式,它返回True如果當前數(shù)字在1和9內(nèi)是6的倍數(shù)。any迭代multiples_of_6當它相遇的時候6,它找到一個Truthy值,因此它立即返回。True的其他部分multiples_of_6不會被迭代。這就是我們印刷時所看到的。list(multiples_of_6)的結(jié)果789.

這個極好的東西非常巧妙地運用在這個答案.


有了這個基本的理解,如果我們看一下您的代碼,您就知道了。

any(x) and not all(x)

這就確保了,至少有一個價值觀是真實的,但不是所有的。所以它才會回來[False, False, False]..如果你真的想看看這兩個數(shù)字是不是不一樣的話,

print [x[0] != x[1] for x in zip(*d['Drd2'])]


查看完整回答
反對 回復 2019-06-29
?
呼喚遠方

TA貢獻1856條經(jīng)驗 獲得超11個贊

我知道這很古老,但我認為在代碼中展示這些函數(shù)的樣子可能會有所幫助。這確實說明了邏輯,比文字或表格海事組織更好。實際上,它們是用C實現(xiàn)的,而不是純Python,但它們是等價的。

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

特別是,您可以看到,空迭代的結(jié)果只是自然結(jié)果,而不是特例。你也可以看到短路的行為,這實際上是更多的工作。短路。

當Guido van Rossum(Python的創(chuàng)建者)第一次提議增加any()all(),他只是簡單地發(fā)布了上面的代碼片段來解釋這些問題。


查看完整回答
反對 回復 2019-06-29
  • 5 回答
  • 0 關注
  • 1333 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號