2016-05-03 3 views
0

を修正するには、私はタプルのpython3でリストにタプルを変換し、これは、Python 3</p> <p>ある

tup = (1, 2, 3) 

を考えてみましょうそして、このタプルはリストに保存されています。

a = [] 
a[0] = tup 

Iリストを反復しています。私がする必要があるのはtupの内容を変更することです。つまり、値を変更したいのですが、リストに残しておきます。a これが正しいですか?

tmp = list(a[0]) 
tmp[0] = 0 # Now a[0] = (0, 2, 3) 

はさらに:私は認識してタプルは不変であるように設計され、リストはおそらく代わりにタプルのtupのための優れていることをされています。しかし、リストに要素を追加するのにappendを使用することは不快です。リストは固定サイズの要素を格納しており、タプルはこれをよりよく表しています。私はむしろtup[0] = blahのように手作業でリストに追加したいと思っていますtup.append(blah)

+0

リストに関する誤解があるようです。 'a [0] = tup' - >' IndexError:リスト割り当てインデックスが範囲外です '。あなたは 'a.append(tup)'を使用する必要があります(または 'a = [None]'でリストをあらかじめ割り当ててください)。また、タプルのような不変な項目をリスト内で変更する唯一の方法は、それを別のものに置き換えることです。 – martineau

+0

ええと、デバッガは私にそれを修正させました。ありがとうございました。 – socrates

答えて

0

答えは簡単です。あなたはすることはできませんし、そうすることは意味がありません。リストは変更可能であり、タプルは変更できません。 aの要素を変更可能にする場合は、リストとして指定します(例:a = [[1,2,3],...])。

実際にタプルとして使用したいのですが、それらを変更する場合は、[0] =(0、)+ a [0] [1:]の行に沿って何かを行うことができます。これにより、の新しいタプルがリストに作成され、単にリストのリストを使用するより効率が悪くなります。

Furthermore: I am aware tuples are designed to be immutable, and that a list is probably better for tup instead of a tuple.

です。

However, I am uncomfortable using append to add elements to the list: the list is storing elements of a fixed size, and a tuple is a better representative of this.

私はあなたがこれによって何を意味するか分かりません。 aは固定サイズか、aの要素は固定サイズですか?どちらの場合でも、どのようにタプルを改善しますか?

ここでの混乱は、Pythonのリストがコンピュータサイエンスの意味でのリストではないことがあります。実際には配列です。検索のためにはO(1)、要素を設定するにはO(1)、サイズを変更する必要がない場合は通常は追加のためにO(1)です。

I'd rather add things manually to the list like tup[0] = blah than tup.append(blah)

あなたはタプルでそれを行うことはできませんが、リストをいずれかを行うことができます、そして、彼らは(1)O周りの両方です。

固定サイズの変更可能な配列が本当に必要な場合は、numpyを参照するか、設定サイズのPythonリストを初期化することができます。

関連する問題