2.3 列表:Python的“苦力”
注:列表是可改变的
2.3.1 list函数
>>> list('Hello')
['H', 'e', 'l', 'l', 'o']
注意,list函数适用于所有类型的序列而不只是字符串。
2.3.2 基本的列表操作
1.改变列表:元素赋值
>>> x = [1,1,1]
>>> x[1] = 2
>>> x
[1, 2, 1]
2.删除元素
>>> names = ['Alice','Beth','Cecil','Dee-Dee','Earl']
>>> del names[2]
>>> names
['Alice', 'Beth', 'Dee-Dee', 'Earl']
3.分片赋值
分片是一个非常强大的特性,分片赋值操作更加显现它的强大。
>>> name = list('Perl')
>>> name
['P', 'e', 'r', 'l']
>>> name[2:] = list('ar')
>>> name
['P', 'e', 'a', 'r']
不等长赋值
>>> name
['P', 'e', 'a', 'r']
>>> name = list('Perl')
>>> name[1:] = list('ython')
>>> name
['P', 'y', 't', 'h', 'o', 'n']
分片赋值语句可以在不需要替换任何原有元素的情况下插入新的元素
>>> numbers = [1,5]
>>> numbers[1:1] = [2,3,4]
>>> numbers
[1, 2, 3, 4, 5]
>>> numbers = [1,2,3,4,5]
>>> numbers[1:4] = []
>>> numbers
[1, 5]
2.3.3 列表方法
方法可以这样进行调用
对象·方法(参数)
1. append
>>> #append方法用于在列表末尾追加新的对象
>>> lst = [1,2,3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]
>>> #count方法统计某个元素在列表中出现的次数
>>> ['to','be','or','not','to','be'].count('to')
2
>>> x = [1,2],1,1,[2,1,[2,2]]
>>> x.count(1)
2
>>> x.count([1,2])
1
3. extend
>>> #extend方法可以在列表的末尾一次性追加另一个序列中的多个值
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
4.index
>>> #index方法用于从列表中找出某个值第一个匹配项的索引位置
>>> knights = ['We','are','the','knights','who','say','ni']
>>> knights.index('who')
4
>>> knights[4]
'who'
5. insert
>>> #insert方法用于将对象插入到列表中
>>> numbers = [1,2,3,5,6,7]
>>> numbers.insert(3,'four')
>>> numbers
[1, 2, 3, 'four', 5, 6, 7]
>>> #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', 'be']
8. reverse
>>> # reverse方法将列表中的元素反向存放
>>> x = [1,2,3]
>>> x.reverse()
>>> x
[3, 2, 1]
9. sort
>>> #sort方法用于在原位置对列表进行排序
>>> x = [4,5,6,1,7,9]
>>> x.sort()
>>> x
[1, 4, 5, 6, 7, 9]
注意:sort方法调用过后,x的序列就是已经排序的,无法回到原来状态
>>> x = [4,5,6,1,7,9]
>>> y = sorted(x)
>>> x
[4, 5, 6, 1, 7, 9]
>>> y
[1, 4, 5, 6, 7, 9]
10.高级排序
>>> cmp(42,32)
1
>>> cmp(99,100)
-1
>>> cmp(10,10)
0
>>> numbers = [5,2,7,9]
>>> numbers.sort(cmp)
>>> numbers
[2, 5, 7, 9]
>>> x = [4,5,6,1,7,9]
>>> x.sort(reverse=True)
>>> x
[9, 7, 6, 5, 4, 1]
元组和列表一样,也是一种序列。唯一的不同是元组不能修改。
>>> 42,#实现一个值的元组。实现方法有些奇特---必须加个逗号,即使只有一个值
(42,)
下面的一个例子体现了逗号的神奇:
>>> 3*(40+2)
126
>>> 3*(40+2,)
(42, 42, 42)
2.4.1 tuple函数
tuple函数的功能与list函数基本上是一样的:以一个序列操作为参数并把它转换为元组。如果参数就是元组,那么该参数就会原样返回。
>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple('abc')
('a', 'b', 'c')
>>> tuple((1,2,3))
(1, 2, 3)
2.4.2 基本元组操作
>>> x = 1,2,3
>>> x[1]
2
>>> x[0:2]
(1, 2)
2.4.3 那么,意义何在
a.元组可以映射(和集合的成员)中当作键使用---而列表则不行。
b.元组作为很多内建函数和方法的返回值存在,也就是说你必须对元组进行处理。
2.5 小结
重点内容:序列、成员资格、方法。
2.5.1 本章的新函数
cmp(x,y) #比较两个值
len(seq) #返回序列的长度
list(seq) #把序列转换成列表
max(args) #返回序列或者参数集合中的最大值
min(args) #返回序列或者参数集合中的最小值
reversed(seq) #对序列进行反向迭代
sorted(seq) #返回已排序的包含seq所有元素的列表
tuple(seq) #把序列转换成数组