2016-03-27 14 views
3

一連の文字列リストの出現回数をカウントする方法はありますか?セットリスト内で複数の出現回数をカウントする

たとえば、このリストがある場合、7 ' 'の空白が含まれます。

list = [[' ', ' ', ' ', ' ', ' ', ' ', ' ']] 
print(list.count(' ')) 

複数のリストのセットに対して同じことを行う方法はありますか?このように、以下の例のために:私はそれをこの同じ方法を行うと

set = [[' ', ' ', ' ', ' ', ' ', ' ', ' '], 
     [' ', ' ', ' ', ' ', ' ', ' ', ' '], 
     [' ', ' ', ' ', ' ', ' ', ' ', ' ']] 
print(set.count(' ')) 

、私が手出力が0なく発生の実際のカウントです。

答えて

7

ソリューション

これは動作します:

>>> data = [[' ', ' ', ' ', ' ', ' ', ' ', ' '], 
      [' ', ' ', ' ', ' ', ' ', ' ', ' '], 
      [' ', ' ', ' ', ' ', ' ', ' ', ' ']] 
>>> sum(x.count(' ') for x in data) 
21 

あなたは、各サブリストにカウントする必要があります。私はgenerator expressionを使ってこれを行い、すべてのサブリストの結果を合計します。 ところで、setを変数名として使用しないでください。これはビルトインです。

パフォーマンス

多くの場合のために重要ではないものの、パフォーマンスは興味深いものになることができます。

%timeit sum(x.count(' ') for x in data) 
1000000 loops, best of 3: 1.28 µs per loop 

%timeit sum(1 for i in chain.from_iterable(data) if i==' ') 
100000 loops, best of 3: 4.79 µs per loop 
関連する問題