2016-06-23 2 views
-1

リストの項目が1つの条件を満たす回数をカウントしたいと思います。たとえば、[I]> 1:いくつかの条件の発生をカウントするために列挙できますか?

a = [2,4,3,0] 

counter = 0 
for value in a: 
    if value > 1: 
     counter += 1 

は、それはそれを行うにはenumerate機能を使用して、カウンター+ = 1を回避することが可能ですか?

ループで作られたよう:

for i,j in enumerate(list(xrange(5))): 
    print i 
    print j 

答えて

3

彼らは説明

a = [2,3,4,0] 
count = len([i for i in a if i > 1]) 
# Or, to avoid a temporary list: (courtesy of John Kugelman) 
count = sum(1 for i in a if i > 1) 

(リストカンプがCで実装されている)気に高速だからあなたがリストにcomprehension-ボーナスポイントを使用することができます。

len(...) # Gives the number of terms in the list 
[i for i in a ... ] # Works like a for loop- this list is composed of pieces named i, where 
        # i is each term in a 
[ ... if i > 1] # As long as that i is > 1. 

# The sum() method does the same thing, but slightly more memory-efficient 
+1

ただし、リストのサイズが大きくなりすぎると、余分なスペースを使用してリストを作成します。 – hashcode55

+0

@ hashcode55元の質問に提示されたメソッドは、 'list(xrange(5))'を作成して同じことを行います。 – Delioth

+0

@JohnKugelmanはカーテンの後ろに 'sum()'してもリストを作成しませんか?リストを作成して集計すると思ったのです。 – hashcode55

関連する問題