前言
本文为《流畅的python》的2.3节的学习笔记。
嵌套元组拆包
metro_areas = [
('Tokyo','JP',36.933,(35.689722,139.691667)),
('Delhi NCR', 'IN', 21.935, (28.613889, 77.208889)),
('Mexico City', 'MX', 20.142, (19.433333, -99.133333)),
('New York-Newark', 'US', 20.104, (40.808611, -74.020386)),
('Sao Paulo', 'BR', 19.649, (-23.547778, -46.635833)),
]
说明:
列表metro_areas包含5个元组元素,每个元组元素中又嵌套一个指示经纬度的元组。
'''
format函数
居中对齐 (:^)
靠左对齐 (:<)
靠右对齐 (:>)
'''
#print title
print('{:15} | {:^9} | {:^9}'.format('', 'lat.', 'long.'))
#{:9.4} :打印4位(不含小数点)
#{:9.4f}:打印至小数点后4位
fmt = '{:15} | {:9.4f} | {:9.4f}'
for name, cc, pop, (latitude, longitude) in metro_areas:
if longitude <= 0:
print(fmt.format(name, latitude, longitude))
>>>
| lat. | long.
Mexico City | 19.4333 | -99.1333
New York-Newark | 40.8086 | -74.0204
Sao Paulo | -23.5478 | -46.6358
说明:
第一行用于打印标题。
第二行设置了每行的显示格式,包括每个元素所占位长度(15,9,9)和小数点后显示位数(.4f)。
第三行For循环中对列表metro_areas进行拆包,要严格按照外层元组的嵌套结构对元组每个元素进行命名。
备注:使用format函数时,可使用特殊符号进行对齐(居中对齐 (:^) 靠左对齐 (:<)
靠右对齐 (:>))
具名元组
from collections import namedtuple
City = namedtuple('City', 'name country population coordinates')
tokyo = City('Tokyo', 'JP', '36.933', (35.689722, 139.691667))
print(tokyo)
print(tokyo.coordinates)
>>>
City(name='Tokyo', country='JP', population='36.933', coordinates=(35.689722, 139.691667))
(35.689722, 139.691667)
说明:
创建一个具名元组需要两个参数,一个是类名,另一个是类的各个字段的名字。通过为元组的每个位置分配一个名称,使得代码更加易于阅读和理解。
总结
嵌套元组拆包方法是严格按照嵌套元组结构对元组每个元素进行命名。
具名元组的创建方法,作用是可以使代码更加易于阅读和理解。