有没有一种方法可以将类型强制从类型列表中赋予值?

时间:2019-11-08 17:07:35

标签: python python-3.x types

我正在从其他地方提取类型,我想将这些类型应用于变量。因此,给定一个列表,例如[<class 'str'>, <class 'int'>, <class 'float'>],有没有一种方法可以系统地应用它们而无需建立一堆if语句?

types = []
for t in ['abc', 1234, 1.2345]:
   types.append(type(t))
print(types)

vars = ['12.34', '56.78', '91.01']
for i in range(len(types)):
   print(<apply types[i] to vars[i]>)

输出:

[<class 'str'>, <class 'int'>, <class 'float'>]
'12.34'
56
91.01 

2 个答案:

答案 0 :(得分:0)

zip和列表理解应该做到

>>> types = [str, int, float]
>>> values = ["foo", "3", "3.14"]
>>> [t(x) for t, x in zip(types, values)]
["foo", 3, 3.14]

答案 1 :(得分:0)

class对象是可调用的,因此您可以执行以下操作:

var = "123"
types = [str, int, float]
result = [typ(var) for typ in types]
print(result) # prints ['123', 123, 123.0]