- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我这样做是为了恢复字符串的第一部分,例如:“13+i”的“13”:
l1 = ['13+i', '1+4i', '3+2i', '11+4i', '5+i', '10+2i', '5+4i']
l2 = [i.split('+')[0] for i in l1]
l2 = list(map(int, l2))
它运行良好,然后我想要“13+i”中的“1”,但自从字符串中的“i”没有“1”因子以来,它变得更加复杂。
我应该得到:
[1, 4, 2, 4, 1, 2, 4]
即,数组中只有复数的虚部。
有什么办法可以帮我解决这个问题吗?
最佳答案
Python 有一种处理复数的方法;它实际上有一个类型( <class 'complex'>
)。因此,为了避免重新发明轮子,我强烈建议使用它。
为此,我们必须首先清理我们的输入(将值从 strings
转换为 complex
)。为此,我们必须首先遵守 Python 的虚数单位 约定,其中 'j'
使用而不是 'i'
.
l1 = ['13+i', '1+4i', '3+2i', '11+4i', '5+i', '10+2i', '5+4i']
l1 = [complex(x.replace('i', 'j')) for x in l1]
# if you are curious how they look like
print(l1)
# -> [(13+1j), (1+4j), ...]
有了正确格式的值,我们可以利用 .real
and .imag
attributes complex
类型的变量并使用 list-compehensions 构建我们的结果列表。
real_parts = [value.real for value in l1]
print(real_parts)
# -> [13.0, 1.0, 3.0, 11.0, 5.0, 10.0, 5.0]
imaginary_parts = [value.imag for value in l1]
print(imaginary_parts)
# -> [1.0, 4.0, 2.0, 4.0, 1.0, 2.0, 4.0]
请注意,默认情况下,它们都是实数(非整数时为实数)。将它们转换为 int
可以通过 [int(value.real) for value in l1]
轻松实现.
可能使用现有功能的最好的事情是您不必担心您可能没有但可能导致代码中断的边缘情况。例如4j
(无实部)或 1-j
(负虚部所以 .split('+')[0]
不起作用)等等。
关于python - 检索存储为列表中字符串的复数的实部和虚部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48378851/
我有一个特别的问题想要解决,我不确定是否可行,因为我找不到任何信息或正在完成的示例。基本上,我有: class ParentObject {}; class DerivedObject : publi
在我们的项目中,我们配置了虚 URL,以便用户可以在地址栏中输入虚 URL,这会将他们重定向到原始 URL。 例如: 如果用户输入'http://www.abc.com/partner ',它会将它们
我是一名优秀的程序员,十分优秀!