您的位置:首页 > 编程语言 > Python开发

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

2015-10-10 22:33 429 查看
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版)>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python list