我有a = ['1','2','','17']我想對其應(yīng)用最小/最大操作。我不能使用熊貓/numpy。但是,我將其轉(zhuǎn)換為浮點數(shù),但無法使用 float() 函數(shù)將 '' 轉(zhuǎn)換為浮點數(shù)。如果我有一個 None 而不是一個 '',也會發(fā)生同樣的事情。我從來沒有在matlab中遇到過這個問題,所以我迷失了python。我可以將它轉(zhuǎn)換為浮點數(shù)[float(i) for i in var if i],但我需要保持相同的大小以便稍后處理索引。此方法將刪除空字符串,這不是我想要的,我需要一個可以在其上應(yīng)用均值/最大值/最小值等的值(顯然不是無)
1 回答

胡說叔叔
TA貢獻(xiàn)1804條經(jīng)驗 獲得超8個贊
您可以定義一個函數(shù),該函數(shù)嘗試將值轉(zhuǎn)換為浮點數(shù),None如果不能,則返回,然后使用列表推導(dǎo)式創(chuàng)建列表的轉(zhuǎn)換和過濾版本,您可以使用min/ max/... 無論如何,同時保持原始不變。
def try_float(v):
try:
return float(v)
except Exception:
return None
# Original:
a = ['1', '2', '', '17', None, 'purple', -7, 0]
# Containing floats and Nones:
floaty_a = [try_float(item) for item in a]
# Filter out the Nones:
filtered_a = [item for item in floaty_a if item is not None]
# Compute min/max:
print(min(filtered_a))
print(max(filtered_a))
添加回答
舉報
0/150
提交
取消