Python any 函式高階技巧

2021-10-11 09:29:39 字數 2109 閱讀 1024

python 內建的 any(x) 函式接受乙個可迭代的元素 x 作為引數,如 list、元組或字典。如果在iterable中至少有乙個元素使用隱式布林轉換計算為true,它返回true,否則返回false。如果iterable是空的,例如,any(),它返回false,因為任何元素都不滿足條件。

下面的**顯示了如何在不同的列表上使用any()函式。

# 布林型列表,含假值 false 

print

(any([

true

,false

,true

,true])

)# true

# 沒有false值的布林列表

print

(any([

true

,true])

)# true

# 包含0值的整數列表

print

(any([

1,2,

-1,0

]))# true

# 不含0值的整數列表

print

(any([

1,2,

-1])

)# true

# 巢狀式列表,內部為空列表

print

(any([

,[1,2,

3]])

)# true

# 巢狀列表,有兩個空的內部列表

print

(any([

,[]]))

# false

# 空列表

print

(any([

]))# false

如果你在元組上使用any()函式,它將返回乙個布林值,表示所有元組元素是否都計算為true。

print

(any((

1,2,

3)))

# true

print

(any((

0,0,

0)))

# false

print

(any((

false,2

==3,-

1)))

# true

print

(any((

true,3

,1!=1

)))# true

字典上的any()函式檢查 keys(而不是values)的迭代,是否至少有乙個 keys 的值為true,如果是,返回值為true,否則為false。否則為false。

d =

print

(any

(d))

# false

d['x']=

100000

print

(any

(d))

# true

根據python的官方文件,該any()函式在語義上等效於以下**片段:

def

any(iterable)

:for element in iterable:

if element:

return

true

return

false

因此,它將遍歷迭代表中的所有元素,並使用元素作為if條件來檢查它的值是true還是false,一旦檢測到乙個true元素,它就會中止迴圈並返回true。這是一種叫做短路的優化,它意味著只對第乙個true值進行評估!

你也可以使用生成器表示式動態地建立乙個迭代,並將其傳遞到 any() 函式中。這可以稱為 「帶有for迴圈的any()函式」。

print

(any

(x**2==

16for x in

range(10

)))# true

上面舉例**使用的條件是x**2==16,它只對x=4有效。當你通過使用range()函式將這個表示式應用於從0到9(包括)的所有x值時,它大多返回false。由於短路,any()函式在評估第五個元素x=4後返回true。

訂閱繼續關注

Python any 函式的使用方法

描述 如果iterable的任何元素為true,則返回true。如果iterable為空,則返回false。相當於 def any iterable for element in iterable if element return true return false 意思是 判斷乙個tuple或者...

GDB高階技巧

本文主要示例一些平常較少使用到的gdb功能,掌握這些用法有助於提高gdb除錯和解決問題的能力。1 檢視巨集 預設情況下,在gdb中是不能檢視巨集的值及定義的,但通過如下方法,則可以達到目的 編譯源 時,加上 g3 gdwarf 2 選項,請注意不是 g 必須為 g3 檢視巨集的值使用命令p,這和檢視...

vim 高階技巧

1 緩衝區 其實,你用 e 瀏覽開啟的檔案都沒有被關閉,這些檔案都在緩衝區中。你可以用下面的命令來檢視緩衝區 ls 於是,在你的vim下,你會看到如下介面 你可以看到vim開啟了四個檔案,編號是4,5,6,7,如果你要切換開啟的檔案,這個時候,你不要按回車 按了也沒事,只不過按了就看不到 ls輸出的...