本章引入一个概念:数据结构。Python中,最基本的数据结构是序列。序列中每个元素被分配给一个位置,称为索引。Python中有6种内建的序列:
- 列表
- 元组
- 字符串
- Unicode字符串
- buffer对象
- xrange对象
最常用的是列表和元组,两者最大的区别在于列表可以修改,而元组不可以修改。
通用的序列操作
- 索引
- 分片
- 序列相加
- 乘法
- 成员资格 in:检查值是否在序列中,返回true或false
- 长度,最大值,最小值
列表
list函数
list函数实现字符串到list的转换:
>>>list('hello')
['h','e','l','l','o']
列表的基本操作
- 元素赋值
- 删除:del
- 分片赋值
列表方法
方法的调用方式为:对象.方法(参数)
1.append
append在列表末尾添加新的元素
>>>lst = [1,2,3]
>>>lst,append(4)
>>>1st
[1,2,3,4]
2.count
count 方法统计某个元素在列表中出现的次数
>>>['to','be','or','not','to','be'].count('to')
>2
>>>x=[[1,2],1,1,[2,1,[1,2]]]
>>>x.count(1)
>1
3.extend
extend在列表末尾一次性追加另一个序列中的多个值。
>>>a=[1,2,3]
>>>b=[4,5,6]
>>>a.extend(b)
>>>a
>[1,2,3,4,5,6]
extend和连接操作’+’最大的区别在于extend修改了被扩展的序列,而连接操则不修改被扩展序列。
4.index
index方法用于从列表中找出某个值第一个匹配项的索引位置。
>>>knights=['we','are','the','knights','who','say','in']
>>>knights.index('who')
>4
5.insert
insert将对象插入到列表中。
>>>numbers=[1,2,3,4,5,6,7]
>>>numbers.insert(3,'four')
>>>number
>[1,2,3,'four',5,6,7]
6.pop
pop方法会 移除列表中的一个元素,默认是最后一个,并返回该元素的值。
>>>x=[1,2,3]
>>>x.pop()
>3
>>>x
>[1,2]
>>>x.pop(0)
>1
>>>x
>[2]
7.remove
remove方法用于移除列表中某个值的第一个匹配项。
>>>x = ['to','be','or','not','to','be']
>>>x.remove('be')
>>>x
>['to','or','not','to']
8.reverse
reverse将列表中的元素反向存放,改变对象值但不返回值。
>>>x=[1,2,3]
>>>x.reverse()
>>>x
>[3,2,1]
9.sort
sort方法用于在原位置(对列表进行更改)对列表进行排序。sort是默认的升序排序。
>>>x=[4,6,2,1,7,9]
>>>x.sort()
>>>x
>[1,2,4,6,7,9]
sort会修改原有对象,如果不想修改原有对象可以:
>>>x=[4,6,2,1,7,9]
>>>y=x[:]
>>>y.sort()
>>>x
>[4,6,2,1,7,9]
>>>y
>[1,2,4,6,7,9]
值得注意的是,调用x[:]是一种比较高校的复制整个列表的方法。
但是只是简单的把x赋值给y是没用的,因为这样会使x和y指向同一个列表。
>>>x=[4,6,2,1,7,9]
>>>y=x
>>>y.sort()
>>>x
>[1,2,4,6,7,9]
>>>y
>[1,2,4,6,7,9]
另外一种获得已排序好的列表副本的方法是sorted函数:
>>>x=[4,6,2,1,7,9]
>>>y=sorted(x)
>>>x
>[4,6,2,1,7,9]
>>>y
>[1,2,4,6,7,9]
10.高级排序
sort方法有两个可选参数:key和reverse。如果使用元素的长度进行排序,可以使用len作为键函数:
>>>x=['aar','dkjvkdf','fdkfklf']
>>>x.sort(key=len)
另一个关键字参数reverse是布尔值。
>>>x=[4,6,2,1,7,9]
>>>x.sort(reverse=True)
>>>x
>[9,7,6,4,2,1]
元组
元组创建
>>>1,2,3
>(1,2,3)
>>>(4,5,6)
>(4,5,6)
>>>()
>()
>>>42
>42
>>>42,
>(42,)
>>>3*(40+2,)
>(42,42,42)
tuple函数
tuple函数以一个序列作为参数并把它转换为元组
>>>tuple([1,2,3])
>(1,2,3)
>>>tuple('abc')
>('a','b','c')
>>>tuple((1,2,3))
>(1,2,3)
元组的意义
使用元组的两个重要原因:
- 在映射中可以当作键来使用,而列表则不行
- 元组作为很多内建函数和方法的返回值存在