[英]Removing quotes from elements in python list
我有一個看起來像alist = ['4', '1.6', 'na', '2e-6', '42']
的python列表。 如果我想從中刪除引號並使它看起來像[4, 1.6, na, 2e-6, 42]
,通常我使用以下代碼:
alist = [float(x) if type(x) is str else None for x in alist]
但是這一次,因為我將字符串'na'
作為列表中的元素之一,所以這一行代碼將不起作用。 有沒有在python中執行此操作的優雅方法?
假設您很樂意用None
替換值'na'
,或更一般地說,將所有非浮點型文本替換為None
,那么您可以執行以下操作:
def converter(x):
try:
return float(x)
except ValueError:
return None
alist = [converter(x) for x in alist]
這會將任何東西轉換為可以浮動的形式。 因此,按現狀,這還將把現有數字轉換為浮點數:
>>> [converter(x) for x in ('1.1', 2, 'na')]
[1.1, 2.0, None]
當打印出python列表,集合,字典等時,它們以python用於編譯“原始代碼”的相同格式打印。 Python編譯帶引號的列表。 因此,您只需要遍歷列表即可。
只需使用生成器表達式即可解決此問題(盡管除非在tkinter小部件上顯示,否則它實際上並沒有多大作用):
>>> alist = ['4', '1.6', 'na', '2e-6', '42']
>>> for a in alist:
... print(a)
>>> 4
>>> 1.6
>>> na
>>> 2e-6
>>> 42
我不確定“ na”,“ nan”的混亂來自何處。 無論如何,如果您想丟失引號,請通過生成器表達式運行代碼,該表達式將不再位於“列表類”下-因此,引號將不再出現。
列表元素仍然是同一類型,
編輯:清晰度,語法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.