导航

Python基础教程——2列表和元组

Posted on 2012-08-05 21:36  immiki  阅读(166)  评论(0编辑  收藏  举报

1  内建的序列:列表,元祖,字符串,Unicode字符串,buffer对象和xrange对象

    列表vs元组:

    列表可以改变,元组不可以。

    使用元组的理由:通常是技术性的。与Python内部的运作方式有关。这也是内建函数可能返回元组的原因

    必须使用元组的情况:使用元组作为字典的键,在这种情况下,因为健不可修改,所以不能使用列表

2  容器container 基本上包含了其他对象的任意对象。包括:

    序列(列表与元组)每个元素都有自己的编号

    映射(字典)每个元素都有自己的名字

    此外,还有集合

<恩,插播,2012.8.5 21:26 林丹赢了。excellent!>

3  通用序列操作

   3.1 索引

   前面从0开始,后面从-1开始数

   3.2分片

   第一个空从头开始,第二个空到结尾

   第三个数表示步长,即间隔

   3.3 序列相加

   要求必须是相同类型的序列才能进行连接操作

   3.4乘法

   None是一个内建值,确切的含义是“这里什么也没有”,用于初始化

   3.5 成员资格 in

   3.6 长度len,最大值max,最小值min

4  列表

   4.1 list 将序列分解,与之相对的是‘’.jion(somelist)

   4.2del语句删除元素  del x[2]

   4.3分片赋值实际上是一种替换

 

5 列表方法

5.1append 在列表尾部追加新的对象

5.2count 统计某个元素在列表中出现的次数

5.3extend vs 连接

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [1,2,3]
>>> a+b
[1, 2, 3, 4, 5, 6]
>>> a
[1, 2, 3]
>>> c.extend(b)
>>> c
[1, 2, 3, 4, 5, 6]

而a = a+b 的操作要比extend的效率低

上面的也可以用分片赋值实现

>>> a = [1,2,3]
>>> b
[4, 5, 6]
>>> a[len(a):] = b
>>> a
[1, 2, 3, 4, 5, 6]

但是可读性比extend低

5.4index返回某个值第一个匹配的索引位置

5.5insert 插入列表

5.6pop默认最后一个,pop(0)第一个 ——唯一一个可以修改列表的同时返回元素值(None除外)的列表方法

对于:LIFO(栈) 用append(x)入栈,用pop()出栈

FIFO(队列) 用insert(0,x)入队列,用pop()出队列 【队首是序列值大的】;或者:用append(x)入队列,用pop(0)出队列【队首是序列值小的】

5.7remove 移除列表中某个值的第一个匹配项

5.8reverse 将元素反向存放

>>> x = [1,2,3]
>>> reversed(x)
<listreverseiterator object at 0x01733A10>
>>> list(reversed(x))
[3, 2, 1]

5.9sort 原位置排序

要得到一个排好序的副本和保持原序列不变

方法一:

>>> x = [3,2,4]
>>> y = x[:] # y = x 是不对的,因为这样的话,x和y将指向同一个列表
>>> y.sort()
>>> x
[3, 2, 4]
>>> y
[2, 3, 4]

方法二:

>>> x = [3,2,4]
>>> y = sorted(x)
>>> x
[3, 2, 4]
>>> y
[2, 3, 4]
>>>

6高级排序

参数cmp

>>> cmp(1,4)
-1
>>> cmp(2,1)
1
>>> cmp(3,3)
0
>>> a = [4,2,6,4]
>>> a.sort(cmp)
>>> a
[2, 4, 4, 6]

 

参数key


>>> 
>>> b = ['sdf','sdd','sssss','d','er']
>>> b.sort(key = len)
>>> b
['d', 'er', 'sdf', 'sdd', 'sssss']
>>>

参数reverse


>>> x = [3,65,1,6,566,23,666]
>>> x.sort(reverse = True)
>>> x
[666, 566, 65, 23, 6, 3, 1]
>>> x.sort(reverse = False)
>>> x
[1, 3, 6, 23, 65, 566, 666]

 7  list将序列转换成列表,tuple将序列转换为元组
>>> list([1,2,3])
[1, 2, 3]
>>> list('abc')
['a', 'b', 'c']
>>> list((2,3,4))
[2, 3, 4]
>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple('abc')
('a', 'b', 'c')
>>> tuple((2,3,4))
(2, 3, 4)