别小看元组

栏目: Python · 发布时间: 5年前

内容简介:元组(tulple)和列表(list),每个写python的都知道,而且都知道,元组是不可变的,但是仅仅因为一个不可变就要创造出一个新的数据类型吗?答案肯定不是,那么我们来看看元组究竟有哪些用法元组其实是对数据的记录:元组中的每个元素都存放了记录中一个字段的数据,外加这个

元组(tulple)和列表(list),每个写 python 的都知道,而且都知道,元组是不可变的,但是仅仅因为一个不可变就要创造出一个新的数据类型吗?

答案肯定不是,那么我们来看看元组究竟有哪些用法

1 把元组用作记录

元组其实是对数据的记录:元组中的每个元素都存放了记录中一个字段的数据,外加这个

字段的位置。正是这个位置信息给数据赋予了意义

比如经纬度信息就可以用一个元组来表示

>>> lax_coordinates = (33.9425, -118.408056)
>>> print('%s/%s'%lax_coordinates)
33.9425/-118.408056

这里使用元组来表示一个位置的经纬度,在 print 时可以将其信息直接打印出来.

2 元组拆包

  1. 分别赋值
    city, year, pop, chg, area = ('Tokyo', 2003, 32450, 0.66, 8014)
    

我们把元组 (‘Tokyo’, 2003, 32450, 0.66, 8014) 里的元素分别赋值给变量 city、year、pop、chg 和 area,

最好辨认的元组拆包形式就是平行赋值,也就是说把一个可迭代对象里的元素,一并赋值到由对应的变量组成的元组中.

  1. 还可以用 * 运算符把一个可迭代对象拆开作为函数的参数

    def add(a,b):
        return a+b
    
    tu = (3,4)
    
    print add(*tu)
    
    # 打印 7
    
  2. 也可以返回一个元组,在调用函数的时候分开接受这些返回值

    def returntuple():
        lax_coordinates = (33.9425, -118.408056)
        return lax_coordinates
    
    latitude, longitude = returntuple()
    print latitude,longitude
    
  3. 用*来处理剩下的元素

    >>> a, b, *rest = range(5)
    >>> a, b, rest
    (0, 1, [2, 3, 4])
    >>> a, b, *rest = range(3)
    >>> a, b, rest
    (0, 1, [2])
    >>> a, b, *rest = range(2)
    >>> a, b, rest
    (0, 1, [])
    >>> a, *body, c, d = range(5)
    >>> a, body, c, d
    (0, [1, 2], 3, 4)
    >>> *head, b, c, d = range(5)
    >>> head, b, c, d
    ([0, 1], 2, 3, 4)
    

3 具名元组

这个之前很少接触, collections.namedtuple 是一个工厂函数,它可以用来构建一个带字段名的元组和一个有名字的类,用 namedtuple 构建的类的实例所消耗的内存跟元组是一样的,因为字段名都被存在对应的类里面。这个实例跟普通的对象实例比起来也要小一些。

#coding:utf-8
from collections import namedtuple

City = namedtuple('City', 'name country population coordinates')
Loca = namedtuple('Loca','lat,lon')

locatinfo = Loca(40.808611, -74.020386)

city = City('New York-Newark', 'US', 20.104, locatinfo)

print city
print city.name
print city.country
print city.population
print city.coordinates
print city.coordinates.lat
print city.coordinates.lon

打印结果为

City(name=’New York-Newark’, country=’US’, population=20.103999999999999, coordinates=Loca(lat=40.808610999999999, lon=-74.020386000000002)) New York-Newark US 20.104 Loca(lat=40.808610999999999, lon=-74.020386000000002) 40.808611 -74.020386

创建一个具名元组需要两个参数,一个是类名,另一个是类的各个字段的名字.

元组在平时的工作中使用较少,主要还是用列表比较多,具名元组这个非常适用于那些比较小的类,以后可以多用用.

参考书籍:流畅的python,文中大部分代码是从中摘抄


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Web Designer's Idea Book

The Web Designer's Idea Book

Patrick Mcneil / How / 2008-10-6 / USD 25.00

The Web Designer's Idea Book includes more than 700 websites arranged thematically, so you can find inspiration for layout, color, style and more. Author Patrick McNeil has cataloged more than 5,000 s......一起来看看 《The Web Designer's Idea Book》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具