python3.5入门(三)通用序列操作

本文内容来自《python3.5从零开始学》

转载请标明作者http://blog.csdn.net/mygirl61/article/details/79297851

1.1索引

    序列是python中最基本的数据结构。序列中的每个元素都分配一个数字,代表它在序列中的位置(索引),第一个是0,第二个是1,以此类推。

    序列中所有元素都是有编号的,从0开始递增。可以通过编号分别对序列的元素进行访问。从左往右,最左边是0

>>>demo='hello'
>>>demo[0]
'h'
>>>demo[3]
l
从右往左,最右边是-1
>>>demo='hello'
>>>demo[-1]
o
>>>demo[-4]
e

上面俩例子均定义了变量,下面我们试试不定义变量,直接使用索引,和上面的效果是一样的

>>>'hello'[1]
e
>>>'hello'[4]
o

函数返回一个序列,也可以进行索引操作

>>>thirdth=input()[0]
happy
>>>thirdth
'h'

索引既可以对变量的引用操作,也可以直接操作序列,还可以操作函数返回的序列

1.2分片

使用分片可以对一定范围内的元素进行访问,分片通过冒号相隔的两个索引实现。

>>>number=[1,2,3,4,5,6,7,8,9,10]
>>>number=[1:3]    #取索引为第一和第二的元素
[2,3]
>>>number[-3:-1]    #取负数表明从右开始计数,取得倒数第三和第二的元素
[8,9]

分片操作的实现需要提供两个索引作为边界,第一个索引的元素包含在分片内,第二个索引的元素不包含在分片内。像数学里的a<=x<b,x是我们需要得到的元素,a是分片操作的第一个索引,b是分片操作的第二个索引,b不包含在x的范围内。

下面我们输出前三个元素和最后三个元素

>>>number[-3:]
[8,9,10]
>>>number[0:]
[1,2,3,4,5,6,7,8,9,10]
>>>number[:]
[1,2,3,4,5,6,7,8,9,10]
进行分片时,分片的开始和结束点都需要指定(无论是直接还是间接),这用方式取连续的值没有问题,但是取不连续的值就麻烦了,python为我们提供了另外一个参数“步长(step length)”,该参数通常是隐式的,普通分片中默认为1,分片操作就是按照步长逐个遍历序列的元素,便利后返回开始和结束之间的元素。
>>>number=[1,2,3,4,5,6,7,8,9,10]
>>>number=[0:10:1]
[1,2,3,4,5,6,7,8,9,10]
>>>number=[0:10:2]
[1,,3,,5,,7,,9]
>>>number=[2:6:3]
[3,6]
>>>number=[2:5:3]
[3]
>>>number[1:5:3]
[2,5]
>>>number[::3]
[1,4,7,10]

下面我们试试步长为0,可不可以实现操作

>>> numbb[::0]
Traceback (most recent call last):
  File "<console>", line 1, in <module>
ValueError: slice step cannot be zero

下面试试步长为负数

>>> numbb[10:0:-2]
[10, 8, 6, 4, 2]
>>> numbb[0:10:-2]
[]
>>> numbb[5::-2]
[6, 4, 2]
>>> numbb[:5:-2]
[10, 8]
>>> numbb[::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> numbb[10:0:-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2]
>>> numbb[10::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> numbb[2::-1]
[3, 2, 1]
>>> numbb[2:0:-1]
[3, 2]

对于正数步长 ,python会从序列的头部开始向右提取元素,知道最后一个元素;对于负数元素步长,则是从序列的尾部开始向右提取元素,直到第一个元素。正数步长必须让开始点小于结束点,而负数步长必须让开始点大于结束点。使用负数步长时,设置第二个索引为空才能取到序列的第一个元素。

1.3序列相加

>>> [1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]
>>> a=[7,8]
>>> b=[9,10]
>>> a+b
[7, 8, 9, 10]
>>> c='hello'
>>> d=',word'
>>> c+d
'hello,word'

数字序列相加得到数字序列,字符串序列相加得到字符串序列。

>>> [2,8]+'hello'
Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list
>>> type([2,8])
<type 'list'>
>>> type('hello')
<type 'str'>

通过type查看类型得出结果:只有同类型相同的序列才能通过加号进行序列连接操作,不同类型的序列不能通过加号进行序列连接操作

1.4乘法

    注意此处的乘法不是数学中的乘法。

用一个数字x乘以一个序列会生成新的序列。在新的序列中,原来的序列将被重复x次,这就是序列的乘法。

>>> 'hello'*5
'hellohellohellohellohello'
>>> [7,8]*5
[7, 8, 7, 8, 7, 8, 7, 8, 7, 8]

如果初始化一个长度为x的序列,就需要让每个编码位置上都是空值,此时需要一个值代表空值,即里面没有任何元素,可以使用None。None是python的内建值,确切含义是“这里面什么都没有”。例如:

>>> sq=[None]*5
>>> sq
[None, None, None, None, None]

从示例我们得出,python中的序列乘法可以帮助我们快速做一些初始化操作。序列乘法做一些重复操作、空列表和None初始化操作是非常方便的 

1.5成员资格

为了检查一个值是否在序列中,python为我们提供了in运算符。in运算符用于检验某个条件是否为真,并返回检验结果,检验结果为真返回true,结果为假返回false。这种运算符称为布尔运算符,返回的真值叫做布尔值。

>>> greeting='hello word'
>>> 'w' in greeting
True
>>> 'a' in greeting
False
>>> number=[1,2,3]
>>> 1 in number
True
>>> 44 in number
False

1.6长度、最小值、最大值

python为我们提供了长度、最大值、最小值的内建函数,对应的内建函数分别是len,max,min

>>> number=[1000,25,35,87,999,2545]
>>> len(number)
6
>>> max(number)
2545
>>> min(number)
25
>>> max(15,32,2,99)
99
>>> min(100,45,3,68,7)
3

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值