簡體   English   中英

python:使用元組的多個變量

[英]python: multiple variables using tuple

我正在閱讀有關tuple的信息:

一旦創建,元組的值就不能改變。

如果你想一次分配多個變量,你可以使用元組:

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

我做了這個..

country = 'India'
print(country)

它被修改了。 怎么會?

您使用元組的方式只是在一行中將單個值分配給單個變量。 這不會將元組存儲在任何地方,因此您將剩下 4 個具有 4 個不同值的變量。 當您更改 country 的值時,您更改的是這個單個變量的值,而不是元組的值,因為字符串變量在 python 中是“按值調用”的。

如果你想存儲一個元組,你可以這樣做:

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

然后您可以通過索引訪問這些值:

print tup[1] #32

編輯:我忘了提到的是元組是不可變的,所以你可以訪問這些值,但你不能像使用數組那樣設置它們。 你仍然可以這樣做:

name, age, country, job = tup

但是這些值將是元組的副本——所以改變這些不會改變元組。

以下代碼片段可能有助於理解原因。 在這里, nameagecountrycareer是單個變量,因此可以修改。

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

您只是在更改變量 Country 而不是元組的值。 你可以這樣測試:

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

輸出應如下所示:

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

您不能更改元組中元素的值,它們是不可變的。 它是元組的主要特征之一。 另一方面,列表是可變的。

這段代碼:

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

如您所見,這個元組沒有改變。

在這里,您的要求是使用單行代碼將元組tup值添加到給定變量(如姓名、年齡、國家/地區、職業)中,不是嗎?

題:

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

所需的答案是:

  name,age,country,career = tup

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM