鱼C论坛

 找回密码
 立即注册
查看: 115|回复: 9

[已解决]小问题

[复制链接]
发表于 2025-1-4 09:53:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
print(sum([a.imag
   for a in [
      0, 5, 10e9, float(‘inf’), float(‘nan’)
   ]
]))
为啥结果是0.0
最佳答案
2025-1-4 10:15:53

你知道复数吧?imag是虚部,你上面给出的列表中的对象都没有虚部,所以相加的结果自然是 0 了

如果你想把实部加起来请用 real,但是因为你列表里面的对象都没有虚部,所以 a.real 等同于 a

print(sum([a.real
   for a in [
      0, 5, 10e9, float('inf'), float('nan')
   ]
]))


等同

print(sum([a
   for a in [
      0, 5, 10e9, float('inf'), float('nan')
   ]
]))


因为你列表里面的对象有一个not a number,所以无论跟什么相加,最终结果都是 not a number,即 float('nan')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2025-1-4 09:53:14 | 显示全部楼层
你好!

`print(sum([]))` 的输出结果为 `0`,而不是 `0.0`。因为 `sum()` 函数用于对可迭代对象(如列表)中的元素进行求和。当你传入一个空列表 `[]` 时,没有任何元素可以求和,所以结果是 0。

如果你的输出结果是 `0.0`,可能是因为代码中其他地方对结果进行了处理,或者有与此相关的其他上下文导致显示为浮点数。

如果还有其他问题,请随时问我!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-4 09:56:00 | 显示全部楼层
FishC 发表于 2025-1-4 09:53
你好!

`print(sum([]))` 的输出结果为 `0`,而不是 `0.0`。因为 `sum()` 函数用于对可迭代对象(如列表 ...

这也不是空列表啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-4 09:56:08 | 显示全部楼层
zyx2012 发表于 2025-01-04 09:56
FishC 发表于 2025-1-4 09:53
你好!

`print(sum( ...


抱歉,我刚才的回答不太准确。看来是代码片段不完整,我们可以检查并补充这个表达式:
print(sum([a.imag for a in []]))

在你显示的代码片段中,`for a in []` 的部分表示一个空列表迭代,所以这个列表解析最终会生成一个空的列表 `[]`。因此,`sum()` 作用于空列表,结果就是 `0`。如果想要看到非 `0` 的值,需要在列表中添加复数元素,这样可以有实际的虚部来进行求和。

如有其他疑问,欢迎继续提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-4 09:57:05 | 显示全部楼层
FishC 发表于 2025-1-4 09:56
抱歉,我刚才的回答不太准确。看来是代码片段不完整,我们可以检查并补充这个表达式:

没看完,你仔细看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-4 09:57:16 | 显示全部楼层
zyx2012 发表于 2025-01-04 09:57
FishC 发表于 2025-1-4 09:56
抱歉,我刚才的回答不 ...


不好意思,我查看不全,代码片段确实不完整,导致理解上出现了问题。根据现有的信息,出现 `0.0` 的原因是因为 `sum()` 函数用于对列表中的复数的虚部求和,但是列表里没有有效的数据来源。

可以确认以下几点来解决问题:

1. **提供列表元素**: 确保在 `for a in ` 后面提供一个实际的可迭代对象,列表或其他数据结构。
2. **复数元素**: 这个列表需要包含复数,这样 `a.imag` 才会生成非 `0` 的值。

举个例子,可以修正为:
print(sum([a.imag for a in [1+2j, 3+4j, 5-6j]]))

这样,输出将是这些复数虚部之和: `2.0 + 4.0 - 6.0 = 0.0`。

如果还有其他问题,请继续问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-4 09:59:05 | 显示全部楼层
求助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2025-1-4 09:59:09 | 显示全部楼层


当然可以!请告诉我你需要什么帮助,我会尽力解答。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-4 10:15:53 | 显示全部楼层    本楼为最佳答案   

你知道复数吧?imag是虚部,你上面给出的列表中的对象都没有虚部,所以相加的结果自然是 0 了

如果你想把实部加起来请用 real,但是因为你列表里面的对象都没有虚部,所以 a.real 等同于 a

print(sum([a.real
   for a in [
      0, 5, 10e9, float('inf'), float('nan')
   ]
]))


等同

print(sum([a
   for a in [
      0, 5, 10e9, float('inf'), float('nan')
   ]
]))


因为你列表里面的对象有一个not a number,所以无论跟什么相加,最终结果都是 not a number,即 float('nan')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-4 10:41:46 | 显示全部楼层
isdkz 发表于 2025-1-4 10:15
你知道复数吧?imag是虚部,你上面给出的列表中的对象都没有虚部,所以相加的结果自然是 0 了

如果你 ...

OK谢谢你,懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-5 15:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表