python学习笔记2 序列概述——列表、元组和字符串

1. 序列概述

数据结构是以某种方式(如通过编号)组合起来的数据元素(如数、字符乃至其他数据结构)集合。(A data structure is a specialized format for organizing and storing data.)

在Python中,最基本的数据结构为序列(sequence)。序列中的每个元素都有编号,即其位置或索引,其中第一个元素的索引为0,第二个元素的索引为1,依此类推。

基本的序列包括:列表、元组、字符串。其中,列表和元组的主要不同在于,列表是可以修改的,而元组不可以。这意味着列表适用于需要中途添加元素的情形,而元组适用于出于某种考虑需要禁止修改序列的情形。

Python支持一种数据结构的基本概念,名为容器(container)。容器基本上就是可包含其他对象的对象。两种主要的容器是序列(如列表、元组、字符串)和映射(如字典)。在序列中,每个元素都有编号,而在映射中,每个元素都有名称(也叫键)。有一种既不是序列也不是映射的容器,它就是集合(set)。

2. 序列的通用操作

索引、切片、相加、相乘和成员资格检查适用于所有的序列。另外,Python还提供了一些内置函数,可用于确定序列的长度以及找出序列中最大和最小的元素

2.1 索引

按照元素的编号来访问各个元素,即为索引(indexing)。序列从左向右,以0作为第一个元素的编号,编号依次递增;从右向左,以-1作为最后一个元素的编号,编号依次递减。

>>> greeting = 'Hellow'
>>> greeting[0]
'H'
>>> greeting[-1]
'w'
>>> 'Hellow'[1]
'e'
>>> fourth = input('Year:')[3]
Year:2008
>>> fourth
'8'

2.2 切片

除使用索引来访问单个元素外,还可使用切片(slicing)来访问特定范围内的元素。

  1. 切片顾头不顾尾(例如[-3:-1],无法索引到最后一个元素);
  2. 如果第一个索引指定的元素位于第二个索引指定的元素后面(如:[-3:0],结果就为空序列);
  3. 简写的重要性,当冒号后不写任何内容时,切片直接结束于序列的末尾(例如索引最后三个元素:[-3:]);
  4. 步长,表示索引每次移动的方向和大小,为正时,表示向右移动,反之向左。当步长为负值时,第一个索引指定的元素可以位于第二个索引指定的元素后面,而上述[-3:0]结果为空序列的原因是该操作种默认是步长为正1,索引向右移动到达末尾,而无法到达第一个元素,返回空序列。

2.3 序列相加

可使用加法运算符拼接序列。

>>> [1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]
>>> 'Hellow, ' +  'World!'
'Hellow, World!'
# 虽然列表和字符串都是序列,但是一般不能拼接不同类型的序列
>>> [1, 2, 3] + 'World'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list
>>> [1, 2, 3] + list('World')
[1, 2, 3, 'W', 'o', 'r', 'l', 'd']

2.4 乘法

将序列与数x相乘时,将重复这个序列x次来创建一个新序列

>>> 'python'*5
'pythonpythonpythonpythonpython'
>>> [666] * 5
[666, 666, 666, 666, 666]

创建一个包含是个元素的空列表。

>>> sequence = [None] * 10
>>> sequence
[None, None, None, None, None, None, None, None, None, None]

2.5 成员资格

要检查特定的值是否包含在序列中,可使用运算符in。它检查是否满足指定的条件,并返回相应的值:满足时返回True,不满足时返回False。这样的运算符称为布尔运算符,而前述真值称为布尔值。

例子:从用户那里获取一个用户名和一个PIN码,并检查它们组成的列表是否包含在数据库(实际上也是一个列表)中。如果用户名-PIN码对包含在数据库中,就打印字符串'Accessgranted'

>>> database = [
...     ['albert', '1234'],
...     ['sunhao', '2333']
... ]
>>> username = input('User name:')

>>> pin = input('PIN code:')

>>> if [username, pin] in database: print('Access granted')

2.6 长度、最大值和最小值

函数len返回序列包含的元素个数,而min和max分别返回序列中最小和最大的元素

3 列表:Python的主力

3.1 列表的创

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值