2016-03-31 12 views
-1

listtuplesです。各タプルは整数と内部リストの2つの要素を持ちます。タプルのリストはlen=900であり、各内部リストは場合によってはlen=2,len=3またはlen=4を持つことができます。Python:どのようにタプルのリスト内の出現を数えることができますか?

これは、リストの抜粋です:

mylist=[(0, [1.0, 1.0]), (1, [1.0, 1.0, 1.0]), ..., (31, [1.0, 1.0, 1.0, 1.0]), ...]

これは、内部リストの各要素が1.0である特定のケースですが、異なる値を扱う一般的なケースに対処したいと考えています。

私の質問:

1)どのように私は内側のリスト内の要素の合計数を数えることができますか?可視化された例では、この数字は2+3+4=9です。

2)内部リスト内の各値(または各ビン)の出現をどのように数えることができますか?

+2

は私たちにあなたのコードを表示する - あなたはすでに試したものを。 –

+0

私はどこから始めるべきかわからないので何も試していません...謝罪。 – FaCoffee

+2

私はあなたの答えを得ていますが、SOはコーディングサービスではありません。少なくともあなた自身で解決策を試し、ここに来る前に試したことを示すべきです。 –

答えて

1

数:

sum(len(l) for _, l in mylist) 

は、出現回数:ビニング

from collections import Counter 
Counter(x for _, l in mylist for x in l) 

出現:

from collections import Counter 
binsize = 100 
Counter(x - x % binsize for _, l in mylist for x in l) 
+0

私は私の値ではるかに高い広がりを持っているので、私はビンを使用する必要がありますか?どのようにして範囲がどんなものになるのかを「カウンター」に伝えるために私のビンの幅を選ぶことができますか?私は何を意味するのか分かりますか? – FaCoffee

+1

中間リストオブジェクトを作成する必要はありません。 'sum(len(l)for mylist)'と 'Counter(xは_のmylistのxをlとします)'は十分です – mvelay

+0

@massiouありがとうヒントのため:) – Schore

1

ここから始めましょう。 #1のために、あなたはリスト内包してタプルの各部分の長さを得ることができます。

lens = [len(y) for x, y in mylist]

これはタプルの各サブリストの長さの配列を生成しますので、lens[0]は2に等しくなり、

1

リストを反復して内側のリストを繰り返し、各値を別々に数えるための辞書を作成します。 また、インナーリストごとに変数をインクリメントして要素を数えます。要素の

inner_list_count = 0 
value_count = dict() 
for key,innerlist in mylist: 
    inner_list_count += len(innerlist) 
    for value in innerlist: 
     if value not in value_count: 
      value_count(value) = 0 
     value_count(value) += 1 
+0

たぶん、コードではなくガイダンスが必要なのでしょうか?その場合、私は誤解して申し訳ありません – Whitefret

関連する問題