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