2024-08-01|閱讀時間 ‧ 約 3 分鐘

[Python]利用生成表達式檢查列表中的座標點集合是否有空值

在檢查列表中含有tuple的座標點時,若要給其他演算法做運算時若有其中有tuple有空值時,就會報錯。

本文主要介紹兩種方法可以檢查是否有空值

for迴圈

positon_list =[(42,123),(None,None),(22,11)]

for cord in positon_list:
    for item in cord:
        if item is None:
            not_None = False
break
print(not_None)  #False

生成器表達式(Generator Expressions)

利用生成器表達式來用一行代替兩層for迴圈

input_list = [(42, 292),(28, 296),(999, 92),(993, 46),(219, 4),(279, 2),(None, None),(None, None)]

not_None = all(item is not None for coord in input_list for item in coord)

print(not_None) # False

使用 all 函數:

not_None = all(item is not None for coord in input_list for item in coord)

這行程式碼使用了 Python 的內建函數 all 和一個生成器表達式來檢查 input_list 中的所有項目是否都不是 None

  • all 函數:all 函數接收一個可迭代對象,當所有元素都為真時返回 True,否則返回 False
  • 生成器表達式:item is not None for coord in input_list for item in coord
    • 外層 for coord in input_list 遍歷 input_list 中的每個元組 coord。
    • 內層 for item in coord 遍歷每個元組 coord 中的每個元素 item。
    • item is not None 檢查每個元素是否不是 None。

合併起來,這個生成器表達式檢查 input_list 中每個元組的每個元素是否都不是 None,如果所有元素都不是 None,則 all 函數返回 True,否則返回 False


參考文獻


分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.