在first_neg上写一个func /,它带有一个(可能是空的)列表 数字作为输入参数,查找第一次出现的a nega / ve数字,并返回索引(即。中的posi / on) 这个号码的列表)。如果列表中没有包含nega / ve数字或者它 为空,程序应返回None。使用while循环(和 不是为了循环)你的while循环应该停止循环一次 找到第一个nega / ve号码。
这是我老师问我任何想法的问题:
def first_neg(list):
count = 0
for number in list:
if number < 0:
count += 1
return count
Dosent似乎工作正常我刚刚加入第一篇帖子希望可以得到一些帮助
答案 0 :(得分:1)
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索引开始。
如果要返回找到第一个负数的列表索引,请尝试:
x = [1,2,3,-5]
def first_neg(list):
for count, number in enumerate(list):
if number < 0:
return count
print(first_neg(x)) # prints 3
这是因为枚举会创建一个&#34;配对&#34;列表中的项目,它是当前计数。每次从列表中获取项目时,枚举只从0开始计数。
另外作为旁注(我在答案中没有改变它,因为我希望你理解发生了什么)。不要将你的变量命名为list,tuple,int,str ...这只是一个坏主意和习惯,它可以正常运行,但它可能会导致问题。
答案 1 :(得分:1)
遇到负面元素后立即返回索引。否则增加指数:
def first_neg(lst):
count = 0
while count < len(lst):
if lst[count] < 0:
return count
count = count + 1
return None
注意:如果使用enumerate()而不是使用额外的count变量,那就更好了。你提到的代码不是用pythonic方式编写的。
你也可以试试这个:
def first_neg(lst):
res = [i for i,x in enumerate(lst) if x<0]
return None if res == [] else res[0]
使用@Chris_Rands建议的生成器可以改进上面的代码。