天天看點

元組和記錄

lax_coordinates = (33.9425, -118.408056)  # 洛杉矶國際機場的經緯度
city, year, pop, chg, area = ('Tokyo', 2003, 32450, 0.66, 8014)  # 東京市的一些資訊:市名、年份、人口、人口變化和面積
travel_ids = [('USA', '31195855'), ('BRA', 'CE342567'),  # 一個元組類型,形式為(country_code,passport_number)
              ('ESA', 'XDA205858')]
for passport in sorted(travel_ids):
    print('%s/%s' % passport)  # 通過%s/%s來拆包元組,%格式運算符能被比對到對應的元組元素上
for country, _ in travel_ids:  # 用for循環來提取元組中的元素,_在這裡是占位符,因為在這裡元組中的第二個元素是passport_number對我麼沒有什麼用
    print(country)
           
BRA/CE342567
ESA/XDA205858
USA/31195855
USA
BRA
ESA
           
latitude, longitude = lax_coordinates  # 元組拆包
print(latitude, longitude)
           
33.9425 -118.408056
           
a = 1
b = 2
print(a, b)
a, b = b, a  # Python中一個很優雅的寫法:不使用中間變量交換兩個變量的值
print(b, a)
           
1 2
1 2
           
print(divmod(20, 8))
t = (20, 8)
print(divmod(*t))  # 用*運算符把一個可疊代對象拆開作為函數的參數
quotient, remainder = divmod(*t)
print(quotient, remainder)

           
(2, 4)
(2, 4)
2 4
           
import os

_, filename = os.path.split('./User/Reion/Document/FluentPython/Tuple.py')
filename  # 元組拆包的一個用法是讓一個函數可以用元組的形式傳回多個值
# 比如os.path.split()函數會傳回以路徑和最後一個檔案組成的元組(path,last_part)對象
# 這裡使用占位符_來拆包将path給_,我們需要的元素lastport給ifilename來實作了拆包
           
'Tuple.py'
           
a, b, *rest = range(5)  # 使用*來處理剩下的元素
print(a, b, rest)
a, b, *rest = range(3)
print(a, b, rest)
a, b, *rest = range(2)
print(a, b, *rest)
           
0 1 [2, 3, 4]
0 1 [2]
0 1
           
# 在平行指派中,*字首隻能用在一個變量命名前,但是這個變量可以出現在指派表達式的任意位置
a, *body, c, d = range(5)
print(a, body, c, d)
*head, b, c, d = range(5)
print(head, b, c, d)
           
0 [1, 2] 3 4
[0, 1] 2 3 4