0

データ コンテナーとして使用しているリストのリストがあります。デバッグ コードはすべて残しました。すべてがコンソールに表示されるので、それをたどることができます。これにより、より冗長な print ステートメントのいくつかが説明されます。

次のような 1 つの長いリストを反復して作成することによって作成されます。

[['Arsenal', 2.47, 1.2, 0.89, 'Chelsea', 2.15, 0.8, 1.21,...

サブリストはすべて均一な長さ (9 要素) であるため、以下を使用してチャンク化しました

# This function should chunk the 'file', as when we run the above code, 
# we'll end up with one incredibly long list that contains every team on the same line
def chunker(seq, size):
    return (seq[pos:pos + size] for pos in xrange(0, len(seq), size))

for group in chunker(league_stats, 9):
   print repr(group)
   final_stats.append(repr(group))
   print "printing final stats"
   print final_stats
   print "and here's a line break" 

次に、次のようになります。

[['Arsenal', 2.47, 1.2, 0.89], ['Chelsea', 2.15, 0.8, 1.21]...]

しかし、それを印刷すると、次のように表示されます。

["['Arsenal', 2.47, 1.2, 0.89]", ['Chelsea', 2.15, 0.8, 1.21|]..."]

それを繰り返すと、期待どおりに表示されるようです

それで、サブリスト全体がリストではなく文字列になったようですよね?これには 2 つの奇妙なノックオンがあります。たとえば、final_stats[0][2] を使用して要素にアクセスすると、予想どおり「アーセナル」ではなく「A」が表示されます。

もちろん、もう 1 つは、リスト要素に対して論理演算を実行できないことです。長いリストを分割する、またはこれが起こらないようにする最善の方法は何ですか?

完全なコード (簡潔にするためにここには含まれていません) が必要な場合は、ここにあり ます。

その答えの誰かが、辞書をより良いデータコンテナとして使用することを提案しました-私はリスト構造に非常に満足しており、(初心者として)私がやりたいことを少し簡単に感じます-これらのデータ構造は常に均一なサイズですであるため、本当に必要でない限り、データ型を変更したくありません。長期的に見ていく上で参考になると思います。

4

1 に答える 1

2

repr()文字列の表現を取得します。すなわち:

print repr("""Hello!
this is a test string
yay.""")

戻り値:

'Hello!\nthis is a test string\nyay.'

コードでは、リストを文字列に変換しています。その[0][2]ため、文字を取得すると、期待するものではありません。

コードで呼び出す必要はありません。通常、チャンクリストを追加するだけです。

于 2013-06-28T12:36:12.373 に答える