如何将字符串'1.000,0.001'转换为复数(1 + 0.001j)?

时间:2016-09-22 16:59:02

标签: python complex-numbers

我能想到的最好的是

s = '1.000,0.001'
z = [float(w) for w in s.split(',')]
x = complex(z[0],z[1])

是否有更短,更清洁,更好的方式?

4 个答案:

答案 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)