在Python列表中索引复数的步骤
在我的Python脚本行中在Python列表中索引复数的步骤,python,Python,在我的Python脚本行中 a=function(i) 所以a是一个结果列表。在此列表中,将有四个值,一个负数、一个正数和两个复数。只有积极的一个是有用的,我想索引它。我为索引写这个,但它不起作用 a=function(i) for b in a: if a>0 and type(a)==type(0.1): return a 那么我该如何应对呢。谢谢。您在函数外部调用return,这是不合法的 要从列表中获取正整数,请假设“正数”和“负数”为floattype
a=function(i)
所以a是一个结果列表。在此列表中,将有四个值,一个负数、一个正数和两个复数。只有积极的一个是有用的,我想索引它。我为索引写这个,但它不起作用
a=function(i)
for b in a:
if a>0 and type(a)==type(0.1):
return a
那么我该如何应对呢。谢谢。您在函数外部调用
return
,这是不合法的
要从列表中获取正整数,请假设“正数”和“负数”为float
type1:
这将把列表中第一个正实数的索引放入索引中
它的工作原理
基本上,这段代码遍历列表,并检查元素的类型。如果元素是实数,则检查其正性。如果为正,则将其索引的值放入索引
,循环停止
1:如果您的意思是“虚部为零的复杂
对象”,则将If type(v)=float和v>=0替换为If v.imag==0和v.real>=0
。但是,在您的代码中,您编写了type(a)==type(0.1)
,因此我假设a
应该是一个float我必须几乎准确地解决这个问题,并编写了一个函数来查找正根,如果没有,则引发一个ValueError:
def find_positive_root(a):
for b in a:
if type(b) == complex or b<0:
continue
return b
raise ValueError('No positive root in {}'.format(a))
def find_positive_root(a):
对于a中的b:
如果类型(b)==复数或b1查找正根([-1.,-4j,-2.3,4j])
在查找正根(a)
4继续
5返回b
---->6 raise VALUERROR({}格式中没有正根(a))
ValueError:在[-1.0,(-0-4j),-2.3,4j]中没有正根
是的。最后我试过了。下面是我的代码:
a=function(i)
for v in a:
if type(v) is sy.add.Add:
pass
elif v > 0:
return v
else:
pass
return v
注意:我使用symphy解函数(I),结果列表中的复数为symphy.add.add 你的函数(i),它返回什么。。。什么是b?为什么把a
放在if语句中?它是一个列表。您需要检查列表项中的b
是否为正数int
如3
,或正数float
如3.0
,甚至是一个没有虚部的正复数,如3+0j
?正数和负数都是浮点数,而不是int。它仍然不起作用。Spyder告诉我:局部变量'index'被赋值给,但从未使用过。所以,我可以再次得到你的帮助,谢谢@KensZheng当然,索引
在我向您提出的代码中没有使用。但它包含您要查找的索引的值。为了说服自己,请在for
循环之后打印索引
,并打印a[index]
。我编辑了我的答案,以突出这一点。另外,我的代码中有一个错误,所以我更正了它。现在它有效地将索引放入索引中
。为什么要测试类型(v)==int
?OP并没有说那个数字是整数。@tobias_k好的,我不知道为什么我假设它是整数来修正它。对此我很抱歉。在列表a中,负数和正数都是float,而不是int。我再次被告知:TypeError:列表索引必须是整数,而不是NoneType。那又是为什么呢。衷心感谢!
In [6]: find_positive_root([-4.3, 2.3j, 3, (-4+8j)])
Out[6]: 3
In [7]: find_positive_root([1., -4j, -2.3, 4j])
Out[7]: 1.0
In [8]: find_positive_root([-1., -4j, -2.3, 4j])
...:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-138-a4ed7675f551> in <module>()
----> 1 find_positive_root([-1., -4j, -2.3, 4j])
<ipython-input-132-9cd37f48e3bb> in find_positive_root(a)
4 continue
5 return b
----> 6 raise ValueError('No positive root in {}'.format(a))
ValueError: No positive root in [-1.0, (-0-4j), -2.3, 4j]
a=function(i)
for v in a:
if type(v) is sy.add.Add:
pass
elif v > 0:
return v
else:
pass
return v