2016-05-13 8 views
3

を使用して、複数の変数私はちょうど私がtupleについて読んでいたPythonのpython:タプル

を学び始めました。 Once created, the values of a tuple cannot change.

は、ここでは、一度に複数の変数を割り当てたい場合は、タプルを使用することができます..私が読んだもの

です:

name,age,country,career = ('Diana',32,'Canada','CompSci') 
print(country) 

私はこれをしなかった。..

country = 'India' 
print(country) 

およびその変更。

どうしてですか?

+6

*タプル*の値を変更するのではなく、変数の値を再割り当てするだけです。タプル '( 'Diana'、32、 'Canada'、 'C​​ompSci')は、4つの異なる' str'変数に*アンパックされます。したがって、変数 'country'を再割り当てすることができます。しかし '( 'Diana'、32、 'Canada'、 'C​​ompSci')[2] =" India "'のようなことをしたいのであれば、 'immutable'タプルの値を変更しようとすることはできません。 –

+2

^おそらく答えとして投稿する必要があります – Keiwan

+0

私はそれを単一の変数に代入するだけで 'tuple'を考慮するでしょうか? – Shri

答えて

3

タプルを使用した方法は、単一の変数に単一の値を1行に割り当てることだけでした。これはタプルをどこにも格納しないので、4つの異なる値を持つ4つの変数が残っています。国の値を変更すると、この単一変数の値は変更されますが、文字列変数はPythonで「値で呼び出す」ため、タプルではなく変更されます。

あなたはタプルを保存したい場合は、このようにそれを行うだろう:私は忘れてしまった何 :

print tup[1] #32 

編集:

tup = ('Diana',32,'Canada','CompSci') 

が次にあなたがインデックスを経由して値にアクセスすることができますがタプルは可変ではないため、値にアクセスできますが、配列で設定できるように設定することはできません。

name, age, country, job = tup 

をしかし、値がタプルのコピーになります - ので、これらは文句を言わないタプルを変更する変更: あなたはまだやることができます。

+0

ありがとうございます。私は明確なアイデアを得た。 – Shri

+0

タプルは不変であると言って忘れて、それに応じて私の答えを更新しました。 –

1

以下のスニペットコードは、その理由を理解するのに役立ちます。ここで、name,age,countryおよびcareerは単一の変数であるため、変更することができます。

t = (name, age, country, career) = ('Diana',32,'Canada','CompSci') 

print(t)   # ('Diana', 32, 'Canada', 'CompSci') 
print(country)  # Canada 

country = 'India' 

print(t)   # ('Diana', 32, 'Canada', 'CompSci') 
print(country)  # India 

t[2] = 'India' 
# The error occurs as expected 
TypeError: 'tuple' object does not support item assignment 
0

タプルではなく変数の値を変更するだけです。あなたはそれをこのようにテストすることができます。

tup=('Diana',32,'Canada','CompSci') 
name,age,country,career = tup 
print(country) 
country = 'India' 
print(tup) 

を次のように出力は次のようになります。

Canada 
('Diana', 32, 'Canada', 'CompSci') 

あなたは、彼らが不変であるタプル内の要素の値を変更することはできません。その1つはタプルの主要な特徴です。一方、リストは変更可能です。

1

このコード:

name, age, country, career = ('Diana',32,'Canada','CompSci') 
print(country) 

がこれを行う:

name = 'Diana' 
age = 32 
country = 'Canada' 
career = 'CompSci' 

タプルは変更可能ではありませんが、あなたはタプルを行っていません。

nameAge = ('Diana', 32) 

今あなたがそれを変更します:タプルを作成するには、このしようとあなたが見ることができるように

>>> nameAge[1] = 33 
Traceback (most recent call last): 
    File "<pyshell#23>", line 1, in <module> 
    nameAge[1] = 'a' 
TypeError: 'tuple' object does not support item assignment 

を、このタプルは変更されません。