我能想到的最好的是
s = '1.000,0.001'
z = [float(w) for w in s.split(',')]
x = complex(z[0],z[1])
是否有更短,更清洁,更好的方式?
答案 0 :(得分:2)
你有什么好。我建议的唯一改进是使用
complex(*z)
如果你想要单行:
>>> complex(*map(float, s.split(',')))
(1+0.001j)
答案 1 :(得分:2)
有一种更简洁的方式,但它并不是更清洁,而且肯定不是更清晰。
x = complex(*[float(w) for w in '1.000,.001'.split(',')])
答案 2 :(得分:0)
我猜你可以稍微缩短一下
real, imag = s.split(',')
x = complex(float(real), float(imag))
不涉及列表理解。
答案 3 :(得分:-1)
如果你可以相信数据没有危险,或者想要代码打高尔夫球:
>>> eval('complex(%s)' % s)
(1+0.001j)