2 列表与元组(5)

目录

2.4 元组:不可变序列

2.4.1 tuple函数

2.4.2 基本元组操作

2.4.3 那么,意义何在

2.5 小结

2.5.2 接下来学什么



2.4 元组:不可变序列

元祖与列表一样,也是一种序列。唯一不同的是元组不能修改。(而且,元组没有像列表一样的方法)创建元组的语法很简单:如果你用逗号分隔了一些值,那就自动创建了元组。

>>> 1,2,3
(1, 2, 3)

元组也是(大部分时候是)通过圆括号括起来的:

>>> (1,2,3)
(1, 2, 3)

空元祖可以用没有包含内容的两个圆括号来表示

>>> ()
()

那么实现包括一个值的元组:必须加个逗号,即使只有一个值 :

>>> 42    #不是元组
42
>>> 42,           #长度为1的元组
(42,)
>>> (42,)   #长度为1的元组
(42,)

Ps:逗号是很重要的,只添加圆括号也是没用的:(42)和42是完全一样的。

>>> 3*(40+2)
126
>>> 3*(40+2,)   #注意是逗号,一点.  时返回126.0
(42, 42, 42)

2.4.1 tuple函数

tuple函数的功能与list函数基本上是一样的:以一个序列作为参数并把它转为元组(tuple并不是真正的函数,而是一种类型。)如果参数就是元组,那么该参数就会被原样返回。

>>> tuple([1,2,3])   #列表转为元组
(1, 2, 3)
>>> tuple('abc')    #字符串转为元组
('a', 'b', 'c')
>>> tuple((1,2,3))    #原样返回
(1, 2, 3)

2.4.2 基本元组操作

元组其实并不复杂---除了创建元组和访问元组元素之外,也没有太多其他操作,可以参照其他类型的序列来实现。

>>> x = [1,2,3]
>>> x[1]
2
>>> x[0:2]
[1, 2]
>>> x = (1,2,3)   #参照上面的列表对元组操作这个位置可以不加();逗号也是表示元组
>>> x[1]
2
>>> x[0:2]
(1, 2)

Ps:元组的分片还是元组,就像列表的分片还是列表一样。

2.4.3 那么,意义何在

到底有谁会需要想元组那样不可变序列呢?难道不能在不改变其中内容的时候坚持只用列表吗?一般来说是可行的。但是由于以下两个重要原因,元组是不可替代的。

(1)元组可以在映射(和集合的成员)中当做键使用---而列表不行(我理解的应该是类似于数据库中的主键key不可修改,更多映射的内容看第4章)

(2)元组作为很多内建函数和方法的返回值存在,也就是说你必须对元组进行处理。只要不尝试修改元组,那么“处理”元组在绝大多数情况下就是把他们当做列表来进行操作,(除非需要使用一些元组没有的方法,例如index和count)

一般来说,列表可能更能满足对序列的所有要求。

2.5 小结

序列:序列是一种数据结构,它包含的元素都进行了编号(从0开始)。典型的序列包括列表、字符串和元组。其中,列表是可变的(可修改),而元组和字符串是不可变的。通过分片操作可以访问序列的一部分,其中分片需要两个索引号来指出分片的起始和结束位置。要想改变列表,则要对相应的位置进行赋值,或者使用赋值语句重写整个分片。

成员资格:in操作符可以检查一个值是否存在于序列(或其他容器)中,对字符串使用in操作符是一个特列,他可以查找子字符串。('x' in permissions)

方法:一些内建类型(例如列表和字符串,元组则不在其中)具有很多有用的方法。这些方法有些像函数,不过他们与特定值联系得更密切。方法是面向对象编程的一个重要的概念(第7章会讨论)

另外自己总结一下学到的,加强印象:删除元素del names[2];

以及列表方法:append、count、extend(连接)、index(找匹配值第一个索引位置)、insert、pop(移除列表中一个元素,有返回值)、remove(移除第一个匹配项)、reverse(反向存放、reversed返回一个迭代器对象reversed(x) )、sort(sorted返回一个列表)、高级排序(cmp、key=len、reverse=True 三个都是参数)

tuple函数返回元组、list函数返回列表

 2.5.1 本章的新函数

函数

描述

cmp(x,y)

比较两个值x>y返回正数,<返回负数,=返回0

len(seq)

返回序列的长度

list(seq)

把序列转换为列表

max(args)

返回序列或者参数集合中的最大值:x = [1,[3,4],8]返回[3,4]

min(args)

返回序列或者参数集合中的最小值:x = [4,[1,2],8]返回4

reversed(seq)

对序列进行反向迭代

sorted(seq)

返回已排序的包含seq所有元素的列表

tuple(seq)

把序列转换成元组

试了下max关于序列的使用

>>> max((1,2,3,4),(5,6,7,8))
(5, 6, 7, 8)
>>> max((1,2,3,4),(5,6,7,8),(9,10))
(9, 10)
>>> max((1,2,9,10),(1,2,7,8))
(1, 2, 9, 10)
>>> max('asad','dadafa') 
'dadafa'

2.5.2 接下来学什么

下一章介绍由字符组成的序列,即字符串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值