如何在python中将字符串列表转换为复数?

new*_*min 4 python

我正在尝试编写在Python中导入和导出复数列表的代码.到目前为止,我正在尝试使用csv模块.我使用以下方法将数据导出到文件:

spamWriter = csv.writer(open('data.csv', 'wb')
spamWriter.writerow(complex_data)
Run Code Online (Sandbox Code Playgroud)

复杂数据是复杂(re,im)函数生成的列表编号.例如:

print complex_data
[(37470-880j),(35093-791j),(33920-981j),(28579-789j),(48002-574j),(46607-2317j),(42353-1557j),(45166-2520j),(45594-232j),(41149+561j)]
Run Code Online (Sandbox Code Playgroud)

然后稍后导入它,我尝试以下方法:

mycsv = csv.reader(open('data.csv', 'rb'))
out = list(mycsv)
print out
[['(37470-880j)','(35093-791j)','(33920-981j)','(28579-789j)','(48002-574j)','(46607-2317j)','(42353-1557j)','(45166-2520j)','(45594-232j)','(41149+561j)']]
Run Code Online (Sandbox Code Playgroud)

(请注意,这是一个列表列表,我恰好只使用了一行示例.)

我现在需要把它变成复数而不是字符串.我认为应该有一种方法可以用这个问题进行映射,但我无法弄清楚如何使它工作.任何帮助,将不胜感激!

或者,如果有任何更简单的方法来导入/导出我不知道的复数值数据,我会很乐意完全尝试其他方法.

Mar*_*ers 8

只需将字符串传递给complex():

>>> complex('(37470-880j)')
(37470-880j)
Run Code Online (Sandbox Code Playgroud)

就像int()它需要一个复数的字符串表示并解析它.您可以使用map()这样做列表:

map(complex, row)
Run Code Online (Sandbox Code Playgroud)


app*_*tor 7

>>> c = ['(37470-880j)','(35093-791j)','(33920-981j)']
>>> map(complex, c)
[(37470-880j), (35093-791j), (33920-981j)]
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

6340 次

最近记录:

8 年,5 月 前