我正在从其他地方提取类型,我想将这些类型应用于变量。因此,给定一个列表,例如[<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
答案 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]