2017-11-12 6 views
3

私の質問は次のとおりです: 私はPythonプログラミングが初めてで、リストの正しい使い方について少し混乱しています。 私はのようなものをやっている10個の要素のリストを作成するたとえばたい:Pythonのリストを最大限に活用するには?

list = [None for x in range(10)] 

そして、私はそれを置くために何かを持っているとき、私は:

list[lastPosition] = data 

しかし、いくつかの研究の後を私は、このリストの使用が効率的ではなく、推奨されていないことに気付きました。しかし、私はすべてのデータを取得する前に、他の方法でどのようにリストをinicializedすることができますか?私のアイデアは、リスト(特にJavaのコレクションのようなもの)をinicial化し、データが入ったときにそれを埋めることです。 私の質問が十分に明確であることを願っています。

+1

'list = []; List.append(data) 'あなたが成長するリストを望むなら?あなたのリストを固定サイズにしたい場合は、 'None'で埋めても何の問題もありません。 (ただし、 'list = [None] * 10'でも簡単です。) – Ryan

+0

@Ryanこれはまさに私が欲しかったものです!ありがとうございました。私はこのリストが動的であるかもしれないことを知らなかった –

+1

'不変*値への参照のリストのために' list = [None] * 10'は動作します。 'list = [[]] * 10'のようなものを試すと、起こるのを待っているエラーです。 – chepner

答えて

2

リストに含まれる要素の数がわからない場合は、 は10個の要素を割り当てようとしないでください。空のリストを開始し、それに追加するappend機能を使用します。

lst = [] 
... 
lst.append(value) 

場合は、あなたが本当に一定のサイズにリストを初期化する必要があるいくつかの理由で、 と初期の要素は不変値あり、 すべての要素がすべてのポイントになりますので、最初の要素は変更可能な値であれば

lst = [None] * 10 

、 あなたはおそらく、この技術を使用したくない を:あなたはこのようにそれを行うことができます同じインスタンス。その場合、あなたのオリジナルの技術は、それがあったように、主に細かいです :listはPython、 でクラスを内蔵し、それは避けた方が良いですされているので、私は 、listからlstに変数の名前を変更し

lst = [SomeClass() for _ in range(10)] 

注意そのような重複。

+0

@timgeb答えとヒントをありがとう。それはまさに私が探していたものです。メソッドを追加することがわからないので、私は一定のサイズで初期化していました。私は書類にもっと注意を払う必要があるようです。 –

関連する問題