在處理數據時,最可能會遇到數據中含有None的時候,若沒有處理就進行運算就會造成程式崩潰或者報錯
input_list = [(42, 292), (28, 296), (999, 92), (993, 46), (219, 4), (279, 2), (None, None), (None, None)]
本文將將介紹使用生成器表達式(generator expression)來過濾掉空值保留好的數據,也用其他方法來達到一樣的效果。
input_list = [(42, 292), (28, 296), (999, 92), (993, 46), (219, 4), (279, 2), (None, None), (None, None)]
# 使用生成器表達式來過濾掉包含 None 的座標
filtered_list = list((x, y) for x, y in input_list if x is not None and y is not None)
print(filtered_list) # 這會輸出 [(42, 292), (28, 296), (999, 92), (993, 46), (219, 4), (279, 2)]
(x, y) for x, y in input_list if x is not None and y is not None
for x, y in input_list
遍歷 input_list: 生成器表達式會依次取出 input_list
中的每一個二元組 (x, y)
。
input_list if x is not None and y is not None
過濾條件: 對於每一個二元組 (x, y)
,檢查 x
是否為 None
並且 y
是否為 None
。如果 x
和 y
都不是 None
,則保留該二元組;否則,過濾掉該二元組。
轉換成列表list(...)。
input_list = [(42, 292), (28, 296), (999, 92), (993, 46), (219, 4), (279, 2), (None, None), (None, None)]
filtered_list = [(x, y) for x, y in input_list if x is not None and y is not None]
print(filtered_list) # 這會輸出 [(42, 292), (28, 296), (999, 92), (993, 46), (219, 4), (279, 2)]
None
input_list = [(42, 292), (28, 296), (999, 92), (993, 46), (219, 4), (279, 2), (None, None), (None, None)]
filtered_list = list(filter(lambda coord: coord[0] is not None and coord[1] is not None, input_list))
print(filtered_list) # 這會輸出 [(42, 292), (28, 296), (999, 92), (993, 46), (219, 4), (279, 2)]
None
input_list = [(42, 292), (28, 296), (999, 92), (993, 46), (219, 4), (279, 2), (None, None), (None, None)]
filtered_list = []
for coord in input_list:
if coord[0] is not None and coord[1] is not None:
filtered_list.append(coord)
print(filtered_list) # 這會輸出 [(42, 292), (28, 296), (999, 92), (993, 46), (219, 4), (279, 2)]
這些方法都可以保留原本的非空值,並且過濾掉包含 None
的座標。你可以根據自己的需求選擇最適合的一種方法。