簡體   English   中英

從python列表中的元素中刪除引號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM