2017-09-11 5 views
0

pythonを使って減らしている間に、いくつの項目が既に減らされていたか知ることはできますか?はいの場合、このコードをどのように変換するのですか?Pythonフィルタlambda - 減らすときに減らされた項目の数

例:

numbers = [1,-1,2,-2,3,-3,4,-4,5,-5,6,-6] 
new_list = [] 
for number in numbers: 
    if number > 0 and len(new_list) < 3: 
     new_list.append(number) 
+0

。あなたがやろうとしていることの例を、 'reduce'を使って示してください。 「減らされた」要素の数は、リスト内の要素の数です(カウントする方法に応じて、1を引いたものです)。 –

+0

彼は 'numbers'を' [1,2] 'に減らそうとしています – nos

+1

どうして減らす必要がありますか? 'new_list = filter(numbers、lambda x:x> 0)[:3]' – user3080953

答えて

1

実際に、それは良い質問、「多くの人がうまくPythonでいくつかの有用なビルドインツールを使用することはできません原因です。

私はなぜ人々があなたの質問をd​​ownvoteするのか分かりません。ここで

は、あなたがやりたいitertoolsを使用して、私の答えです。(私たちは3に渡される)

import itertools 
top3 = itertools.islice(filter(lambda x: x > 0, numbers), 3) 
print(list(top3)) 

isliceは最初の3つの要素を消費しますので、私たちはしないでくださいリストが長すぎる場合、または満足された番号が1つしかない場合でも、が壊れません。これはの機能プログラミングのクールです。

結果:私は理解していない

[1, 2, 3] 
関連する問題