元組可以被看成是不能改變的列表。列表是動態(tài)的,你可以增添,插入,刪除,更改列表元素。有時我們需要這樣的操作,但是有些時候我們需要保證有些數(shù)據(jù)是不能被用戶或程序更改的。這就是元組的作用。
準(zhǔn)確的說,列表是可變對象,元組是不可變對象。
定義和訪問元組
元組的定義和列表相似,只是列表是用方括號定義,元組是用圓括號定義的。一旦定義好元組,你可以像訪問列表那樣訪問元組元素,并且可以使用?for?循環(huán)。
更多學(xué)習(xí)資料,加Q群:313074041
colors? =? ('red',? 'green',? 'blue')
print("The first color is: " + colors[0])
print("\nThe available colors are:")
for color in colors:
? ? print("- " + color)
如果你嘗試向元組中添加元素,你會得到一個錯誤。
colors = ('red', 'green', 'blue')
colors.append('purple')
同樣的,其他操作也會導(dǎo)致錯誤。一旦定義好一個元組,它就不會被改變。
元組生成字符串
我們知道混合英文字符和存儲字符串的變量是相當(dāng)有用的,如下所示:
animal = 'dog'
print("I have a " + animal + ".")
當(dāng)我們想要生成一系列的語句的時候,這種方式是不錯的生成方式。如下所示:
animals = ['dog', 'cat', 'bear']
for animal in animals:
? ? print("I have a " + animal + ".")
我們用加號來實現(xiàn),這種方法是符合直覺的,但不夠簡潔。使用占位符就能使代碼更簡潔。
Python 通常會忽略掉我們放進(jìn)字符串的字符,但是它會對少許字符格外注意。例如 "\t" 和 "\n"。Python 同樣也會注意到 "%s" 和 "%d"。它們被稱為占位符。當(dāng) Python 看到了 "%s" 占位符,它就會找到 % 后的第一個參數(shù)填充進(jìn)占位符。如下所示:
animal = 'dog'
print("I have a %s." % animal)
這是一種相當(dāng)簡潔的方法來生成包含變量的字符串。我們將句子寫進(jìn)一條字符串中,然后告訴 Python 我們需要什么值嵌入到字符串的指定位置中。
這種方法被稱為格式化字符串(string formatting)。如果你有不止一個數(shù)據(jù)要填充進(jìn)字符串中,你需要將參數(shù)放進(jìn)元組中。如下所示:
animals = ['dog', 'cat', 'bear']
print("I have a %s, a %s, and a %s." % (animals[0], animals[1], animals[2]))
包含數(shù)字的格式化字符串
如果你想打印一個包含數(shù)字的字符串,如下所示:
number = 23
print("My favorite number is " + number)
上述代碼會報錯。Python 不知道你指的是值為23還是作為字符串的“23”。如果你想讓 Python 以字符串的形式對待這個變量,我們需要用到str()函數(shù)將數(shù)字轉(zhuǎn)為字符串。如下所示:
number = 23
print("My favorite number is " + str(number) + ".")
如果要用格式化的字符串,"%d" 會幫助到我們。如下所示:
number = 23
print("My favorite number is %d." % number)
同理,你想嵌入多個數(shù)字,只需要將參數(shù)放進(jìn)元組里。如下所示:
numbers = [7, 23, 42]
print("My favorite numbers are %d, %d, and %d." % (numbers[0], numbers[1], numbers[2]))
你也可以混合使用字符串和數(shù)字占位符。不再贅述。
在 Python 3 中還有很多復(fù)雜的方法做字符串格式化。我們會留到以后再講。
動手試一試
Gymnast Scores
裁判給體操運(yùn)動員打分,1-10分。所有的分?jǐn)?shù)都是整數(shù)。
把運(yùn)動員可能得到的分?jǐn)?shù)存儲到元組中。
從元組中取出元素打印語句 “The lowest possible score is ___, and the highest possible score is ___.”
Revision with Tuples
使用格式化字符串打印 Gymnast Scores 中的語句。
# Ex : Gymnast Scores
# put your code here
更多學(xué)習(xí)資料,加Q群:313074041
# Ex : Revision with Tuples
# put your code here