索引和发生的负数查找器

2024-09-29 10:30:34 发布

您现在位置:Python中文网/ 问答频道 /正文

在第一个\u neg上写一个func/,它接受一个(可能是空的)列表 数字作为输入参数,查找 nega/ve编号,并返回索引(即 编号)。如果列表中没有nega/ve编号或 为空,程序应返回None。使用while循环(和 而while循环一旦 找到第一个nega/ve编号。在

这是我的老师问我的问题我做了什么:

def first_neg(list):
    count = 0
    for number in list:
        if number < 0:
            count += 1
            return count

我刚加入第一站希望能得到一些帮助


Tags: 程序nonenumber列表参数countve数字
2条回答
x = [1,2,3,-5]

def first_neg(list):
    count = 0
    for number in list:
        count += 1      #moved it outside of the if
        if number < 0:
            return count

print(first_neg(x))   #prints 4

你想增加count不是在找到答案时,而是在每次forloops循环时。注意,这个方法返回4,它是列表中的第四项,而不是索引,列表的索引从0开始,所以访问它应该是3。以我们的列表x = [1,2,3,-5]-5位于列表的第四个插槽中,但是要访问它,我们必须调用x[3],因为列表从0开始索引。在

如果要返回找到第一个负数的列表的索引,请尝试以下操作:

^{pr2}$

这是因为enumerate创建了列表中的项的“配对”,它是当前计数。Enumerate每次从列表中获取项时,从0开始计数。在

我也不想让你知道我的答案是什么。不要给变量命名关键字,比如list,tuple,int,str。。。只是一个坏主意和坏习惯,你可以看到它的作用,但它也会引起问题。在

一旦遇到负元素,立即返回索引。否则增加索引:

    def first_neg(lst):
        count = 0
        while count < len(lst):
            if  lst[count] < 0:
                return count
            count = count + 1
        return None

注意:最好使用enumerate()而不是使用额外的count变量。你提到的代码不是用python编写的。


你也可以试试这个:

^{pr2}$

上面的代码可以使用@Chris_Rands建议的生成器进行改进。在

相关问题 更多 >