Python基础(二):列表和元组

Python基础(二):列表和元组
日期:2015年10月10日  作者:雨水
概述
本文为<Python基础教程>的读书笔记(二)

列表索引
Python中列表的索引也是从0开始的。比如:
>>> hello="Hello"
>>> hello[0]
'H'

Python还支持负数索引,这是Java等语言所没有的特点。当使用负数索引时,Python从右边,也就是从最后1个元素开始计数,最后一个元素的位置是-1。
>>> hello[-1]
'o'
>>>
对于字符串常量,不需要变量就可以引用,比如:
>>> 'Hello'[0]
'H'
>>> "Hello"[0]
'H'
>>>
如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作,比如:
>>> ret=raw_input('Year: ')[3]
Year: 2015
>>> ret
'5'
>>>
这里[3]直接跟在raw_input函数后面,把输入的结果的第四个字符赋值给ret。注意:这里如果输入少于四个字符,会报"IndexError: string index out of range"错误。

列表分片
分片可以访问一定范围内的元素,分片通过冒号隔开的两个索引来实现。比如:
>>> 'Hello'[1:4]
'ell'
注意:第一个索引的元素包含在分片内,而第二个则不含在分片内。
当分片包含第一个或者最后一个元素时,则第一个和最后一个元素的索引可以省略。如:
>>> 'Hello'[1:]
'ello'
>>> 'Hello'[:2]
'He'
>>> 'Hello'[:]
'Hello'
>>>
分片步长 
默认的分片步长是1,比如:
>>> num=[1,2,3,4,5,6,7,8]
>>> num[2:6]
[3, 4, 5, 6]
>>> num[2:6:1]
[3, 4, 5, 6]
>>>
也就是说,num[2:6]与num[2:6:1]等价,后者只是显示地指明了默认步长。当默认步长比1大的时候就会跳过一些元素,如:
>>> num[2:6:2]
[3, 5]
>>> num[::2]
[1, 3, 5, 7]
>>>
步长不能为零,但是可以为负数,此时分片从右到左开始提取数字。如:
>>> num[::-1]
[8, 7, 6, 5, 4, 3, 2, 1]
需要注意的是,当步数为负时,开始点的索引要大于结束点的索引。

序列相加
通过加运算符+可以进行序列的连接操作,如:
>>> [1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]
>>> 

注意:列表和列表,字符串和字符串可以相加,而列表和字符串无法相加。

序列乘法
用数字x乘以一个序列,序列会生成新的序列,新的序列将被重复x次。如:
>>> 'hello' * 2
'hellohello'
>>> [12] * 3
[12, 12, 12]
>>>

空列表
>>> []
[]
>>> None
>>>
>>> [None] * 5
[None, None, None, None, None]
>>>
None是Python的一个内建值,代表什么都没有。

成员资格
为了检查一个元素是否在序列中,可以用in运算符,如:
>>> 'w' in 'Hello'
False
>>> 5 in [1,2,3]
False
>>> 1 in [1,2,3]
True
>>>

序列长度,最大值和最小值
内建函数len, max和min分别返回序列的元素数量,最大值和最小值。如:
>>> len([1,2,3])
3
>>> min([1,2,3])
1
>>> max([1,3,5])
5

list函数
>>> list('hello')
['h', 'e', 'l', 'l', 'o']

列表基本操作
改变列表:元素赋值
>>> x=[1,3,5]
>>> x[1]=2
>>> x
[1, 2, 5]

删除元素:del语句
>>> x=[1, 2, 5]
>>> del x[1]
>>> x
[1, 5]
>>>

分片赋值
分片赋值的时候,可以使用与原序列不等长的序列将分片替换。当原序列长度为零时,就变成插入了。当替换序列长度为零时,就变成了删除。如:
>>> name=list('hello')
>>> name[2:3]=list('aa')
>>> name
['h', 'e', 'a', 'a', 'l', 'o']
>>>

>>> name=list('hello')
>>> name[2:2]=list('345')
>>> name
['h', 'e', '3', '4', '5', 'l', 'l', 'o']
>>>

>>> name=list('hello')
>>> name[2:4]=[]
>>> name
['h', 'e', 'o']
>>>

列表方法
append方法用于在列表末尾追加新的对象
>>> num=[1,2,3]
>>> num .append(4)
>>> num
[1, 2, 3, 4]
>>>
count方法用于统计某个元素在列表中出现的次数,如:
>>> num =[1,2,4,1,5,1]
>>> num .count(1)
3
>>>
 
extend方法可以在列表末尾一次性追爱记另外一个列表的多个值,如:
>>> num=[1,2,3]
>>> num.extend([4,5,6])
>>> num
[1, 2, 3, 4, 5, 6]
>>>
extend和列表连接的区别在于extend修改了原序列,而连接返回新的序列 
index方法用于从列表中找出某个值第一个匹配项的索引位置
insert方法用于将对象插入到列表中
pop方法会移除列表中的一个元素(默认最后一个),并返回该元素的值
remove方法用于移除列表中某个值的第一个匹配项
reverse反复用于将列表中的元素反向
sort方法用于在原位置对列表进行排序

元组:不可变序列
元组就是不可变的序列
元组创建
>>> 1,2,3
(1, 2, 3)

元组通常用圆括号括起来
>>> (1,2)
(1, 2)
>>> ()
()

包含值的元组必须要包含逗号,即时只有一个值,如:
>>> (1,)
(1,)
>>> (1)
1
后面这个就不是元组。

tuple函数
tuple函数以一个序列作为参数并把它转换为元组,如:
>>> tuple([1,2,3])
(1, 2, 3)

参考资料:
[1] <Python基础教程(第2版)>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gobitan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值