从python列表中的元素中删除引号

时间:2017-11-04 01:29:37

标签: 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中有一种优雅的方法吗?

2 个答案:

答案 0 :(得分:1)

假设您很乐意将值'na'替换为None,或者更常见的是,使用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]

答案 1 :(得分:0)

当打印出python列表,集合,dicts等时,它们的打印格式与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”混淆来自哪里。无论如何,如果您想丢失引号,请通过生成器表达式运行代码,它将不再位于“列表类”下 - 因此,引号将不再出现。

列表元素仍然是相同类型,

编辑:清晰度,语法