如何将字符串列表转换为正确的Python类型?
给定一个包含Python字符串的列表,我该如何自动将它们转换为正确的类型呢?
比如说,如果我有:
["hello", "3", "3.64", "-1"]
我希望这个能被转换成以下的列表:
["hello", 3, 3.64, -1]
其中第一个元素是字符串,第二个是整数,第三个是浮点数,第四个是整数。
我该怎么做呢?
7 个回答
4
我用 json.loads
方法也做到了这一点。
def f(l):
for i in l:
try:
yield json.loads(i)
except:
yield i
测试:
In [40]: l
Out[40]: ['hello', '3', '3.64', '-1']
In [41]: list(f(l))
Out[41]: ['hello', 3, 3.64, -1]
8
不使用评估:
def convert(val):
constructors = [int, float, str]
for c in constructors:
try:
return c(val)
except ValueError:
pass
25
在编程中,有时候我们需要把一些东西放在一起,形成一个整体。这个整体就像一个盒子,里面可以装很多不同的东西。我们可以把这些东西称为“对象”。
对象有自己的特点和行为。特点就像是对象的属性,比如颜色、大小等;而行为则是对象可以执行的动作,比如走、跳等。
在编程里,我们通常会创建一个“类”,这个类就像是一个模板,告诉我们如何制作对象。然后,我们可以根据这个模板来创建多个对象,每个对象都有自己的特点和行为。
这样做的好处是,我们可以更好地组织代码,让它更容易理解和维护。就像把不同的玩具放在不同的盒子里,找起来就方便多了。
import ast
L = ["hello", "3", "3.64", "-1"]
def tryeval(val):
try:
val = ast.literal_eval(val)
except ValueError:
pass
return val
print [tryeval(x) for x in L]