2017-11-17 17 views
-1

初心者のコーダーはここに!私は、 "negative"かどうかを調べるために "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) 

これは私が現時点で持っているものです。私がこれをどのように認めることができるか教えてください。これは純粋に私自身の好奇心のためです。

+0

を使用するように素晴らしい時間のように聞こえますforループ。 – Pintang

+0

'zip()'もここでも便利です。 –

+4

[2つのリストを並行して反復する方法](https://stackoverflow.com/questions/1663807/how-to-iterate-through-two-lists-in-parallel) –

答えて

0
budgets = [-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 = [] 

for budget, year in zip(budgets, years): 
    if budget < 0: 
     nodef.append(year) 

print(nodef) 
+0

これは完全に機能しました!お手伝いありがとう!私はzip()が事であることを知らなかったので、私はそれを将来のために使うつもりです。 –

0

あなたは21に出力を制限したい場合は、これはそれを行うだろう:あなたは本当にそれを必要としない場合

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

[:21]を出したままにしておきます。

、異なるアプローチ:

nodef = [years[i] for i, budget in enumerate(budgets) if budget < 0] 
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] 
関連する問題