在Python列表中索引复数

时间:2017-05-17 12:52:09

标签: python

在我的Python脚本行

$(document).ready(function() {
        $('#mobile').keyup(function() {         
            var oldvalue=$(this).val();
            var field=this;
            setTimeout(function () {
                if(field.value.indexOf('91') !== 0) {
                    $(field).val("91" +oldvalue);
                } 
            }, 1);
        });
    });

所以a是结果列表。在此列表中,将有四个值,负数,正数和两个复数。只有积极的一个对我有用,我想索引它。我写这个索引,但它不起作用

a=function(i)

所以我该怎样解决它。感谢。

3 个答案:

答案 0 :(得分:1)

我必须完全解决这个问题并写了一个函数来找到正根并且如果没有则引发一个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))

为此编写专用函数的优点是可以测试它:

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]

答案 1 :(得分:0)

你在函数之外调用return,这是不合法的。

要从列表中获取正整数,假设“正”和“负”数字为float类型 1

a = function(i)

index = None
for index, v in enumerate(a):
    if type(v) == float and v >= 0:
        break

print(index)
print(a[index])

这会将列表的第一个正实数的索引放入index

工作原理

基本上,此代码遍历列表,并检查元素的类型。如果元素是实数,则检查其正面性。如果是正数,则将其索引的值放入index,并停止循环。

1:如果您的意思是“假想部分为零的complex对象”,请将if type(v) == float and v >= 0替换为if v.imag == 0 and v.real >= 0。但是,在您的代码中,您编写了type(a)==type(0.1),因此我认为a应该是float

答案 2 :(得分:0)

呀。最终我试了一下。以下是我的代码:

a=function(i)
for v in a:
    if  type(v) is sy.add.Add:
        pass
    elif v > 0:
        return v
    else:
        pass
return v

注意:我使用sympy解决了函数(i),结果列表中的复数是sympy.add.Add。