gpt4 book ai didi

python - 检索存储为列表中字符串的复数的实部和虚部

转载 作者:太空狗 更新时间:2023-10-30 02:38:02 27 4
gpt4 key购买 nike

我这样做是为了恢复字符串的第一部分,例如:“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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com