别小看元组

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

内容简介:元组(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,文中大部分代码是从中摘抄


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

查看所有标签

猜你喜欢:

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

口碑

口碑

[美] David Meerman Scott / 高游、郭成钢、薛松 / 人民邮电出版社 / 2010-10 / 25.00

Web 2.0时代,怎样让你的产品或创意风靡一时,为百万大众喜闻乐道?本书将为你揭开其中的奥秘。作者将理论创新与实务操作相结合,总结出了利用Web 2.0营销手段制造网络狂欢效应的六条金科玉律,并介绍了一个个生动鲜活的成功范例,如:哈利?波特魔法公园如何策划一场小型活动,达到引爆网络热潮的效果;贝克?霍尔克拉夫特如何通过网络发布音乐作品,从默默无闻成长为全球炙手可热的明星;看似平淡无奇的电子书,如......一起来看看 《口碑》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

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

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具