Python 添加到循环中的列表/数组

Python 添加到循环中的列表/数组,python,arrays,list,loops,Python,Arrays,List,Loops,初学者编码器在这里!我想做一个循环,检查名为“budget”的列表是否为负值,如果为负值,它将使用“years”列表将年份添加到名为“nodef”的列表中。我的最终结果是让“nodef”列表包含所有没有赤字的年份 budget = [-1075,1225,4239,6084,1489,4031,1846,600,-6409,-19262,-14011,-12969,-9220,-10453,-10315,-3500,-1500,600,600,900] years = [2000,2001,2

初学者编码器在这里!我想做一个循环,检查名为“budget”的列表是否为负值,如果为负值,它将使用“years”列表将年份添加到名为“nodef”的列表中。我的最终结果是让“nodef”列表包含所有没有赤字的年份

budget = [-1075,1225,4239,6084,1489,4031,1846,600,-6409,-19262,-14011,-12969,-9220,-10453,-10315,-3500,-1500,600,600,900]

years = [2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019]

nodef = []

i = 0

if i <21:

 if budget[i]<0:

   nodef.append(years[i])
   i += 1
else:

print(nodef)
budget=[-1075122542396084148940311846600,-6409,-19262,-14011,-12969,-9220,-10453,-10315,-3500,-1500600900]
年份=[2000200120022003200420520062007200820092010201120121201420152016201720182019]
nodef=[]
i=0
如果我
预算=[-1075122542396084148940311846600,-6409,-19262,-14011,-12969,-9220,-10453,-10315,-3500,-1500600900]
年份=[2000200120022003200420520062007200820092010201120121201420152016201720182019]
nodef=[]
对于预算,zip中的年份(预算,年份):
如果预算<0:
nodef.append(年)
打印(nodef)

如果要将输出限制为21,可以这样做:

nodef = [year for budget, year in zip(budgets, years) if budget < 0][:21]

另一种方法是:

nodef = list(map(lambda k: years[k], filter(lambda i: budget[i]<0, range(len(budget)))))
print(nodef)

听起来是使用for循环的好时机。
zip()
在这里也很有用。对于您提供的链接,@BilltheLizard可能存在重复,这是相关的,但我不希望打印出预算。我要的是这些年。用这种方法可能吗?从我所看到的,我认为可以,但我不完全确定。是的,在循环中,您只需将预算与0进行比较,然后打印年度(或将其附加到另一个列表中…无论您需要做什么)。这非常有效!谢谢你的帮助!我不知道zip()是一个东西,所以我会考虑在将来使用它。
nodef = [years[i] for i, budget in enumerate(budgets) if budget < 0]
nodef = list(map(lambda k: years[k], filter(lambda i: budget[i]<0, range(len(budget)))))
print(nodef)
[2000, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016]