python_基础_4__列表_元组_字典_集合

在python中,列表,元组,字典,集合比较强大。它对于数据组织提供方便。特别是这些序列处理方法,比C方便快捷。

 

 


序列

序列是最基本数据结构之一,序列的每个元素都可以是任何类型(也可以是序列)。

每个元素被分配一个序号,即元素位置(也称索引)。第一个序号规定为0,第二为1.……

python中的序列包括六种:

列表,元组,字符串,Unicode字符串,buffer对象和xrange对象, 常用的是前三种。

列表用中括号[],元组使用圆括号().

列表是可以修改的,而元组是不可以修改的。

>>> lsa = [1,2,3]

>>> lsa

... [1,2,3]

>>> lsa[0] = 2

>>> lsa

... [2,2,3]

>>> tup = (1,2,3)

>>> tup

... (1,2,3)

>>> tup[0]       #注意引用元组中的元素时,下标也是要用中括号[],而不是圆括号()

... 1

>>> tup[0] = 2     #想给元组的第一个元素重赋值,修改它,会提示出错

Traceback(most rcent call last):          #出错信息...

   File"<stdin>", line 1, in <module>

TypeError: 'tuple' object does not support item assignment

序列的基本操作:

序列有六种,它们之间有些通用操作,是最基本、最常见的。它们是:

  • 索引
  • 切片
  • 序列加
  • 序列乘
  • in
  • len、 max、 min

1 索引: 序列[编号]

序列中每个元素都有编号(从0开始),元素可以通过编号来进行访问。

想读取倒数第几个元素时,最后一个元素的编号是-1, 倒数第二个是-2

>>> a = [1,2,3]

>>> a[0]

1

>>> a[-1]

3

2 切片: 序列[ 开始编号 : 结束编号的后一个 : 步长 ]

使用索引每次读取一个值,也可以用切片读取序列中的一段值。默认步长是1

>>> a = [1,2,3,4,5]

>>> a[1:3]

... [2,3]      #索引号是3的元素(4)并不在内

>>> a[1:-1]    #最后一个不包括在内

... [2,3,4]

>>> a[1:]      #省略结束编号,表示起始编号到最后所有

... [2,3,4,5]

>>> a[ :-1]      #省略起始编号,表示从编号[0]开始

... [1,2,3,4]

>>> a[:]      #前后都没给定,表示整个序列

... [1,2,3,4,5]

>>> a[0:4:2]    #从第一个到第四(编号3)个,步长为2

... [2, 4]

#使用切片得到结果还是一个序列,哪怕是只有一个元素:

>>> a = [1,2,3,4,5]

>>> a[2:3]

... [3]            #3的外面有中括号,说明它是一个列表,而不只是一个数值

>>> type(a[2:3])      #用type()函数返回a[2:3]的类型

... < type 'list'>        #返回的类型是'list',即列表

 

3 序列加:  序列 + 序列 

可以用‘+’把两个相同类型的序列连接在一起。

>>> a = [1,2,3]

>>> b = [4,5,6]

>>> a + b

... [1,2,3,4,5,6]

前后两个序列类型要相同,否则出错:

>>> a = [1,2,3]      #列表

>>> b = (4,5,6)      #元组

报错...

4 序列乘: 序列 * n

可以用‘*’例序列重复n次,得到一个新的序列,n表示重复的次数:

>>> a = [1,2,3]

>>> a *3

... [1,2,3,1,2,3,1,2,3]

5 in: 元素 in 序列

可以使用“in”检查某个元素是否在序列中, 返回布尔值TrueFalse

>>> a = [1, 2, 3]

>>> 1 in a

... True

>>> 5 in a

... False

6 len、max、 min : len(序列), max(序列), min(序列)

len, max, min是python内建的函数,分别返回序列的长度,最大的元素,最小的元素(值):

>>> a = [1,2,3,4,5]

>>> len(a)

... 5

>>> max(a)

... 5

>>> min(a)

... 1

>>> max(1, 2,55)    #不一定要是序列名,可以用多个数字作为参数

... 2.55

>>> min(2.4, -1) 

... -1

回上部


列表

列表的创建: [], 例: >>> a = [1,2,3]

单个元素的修改: >>> a[0] = 2

切片修改:

使用索引可以找到一个元素,并可以修改这个元素的值,用切片可以找到一段元素,并可以修改一段元素的值。

>>> list_a = [1,2,3,4]

>>> list_a[0:2] = [5,6]

>>> list_a

... [5,6,3,4]

python中可以使用不定长的序列来修改选中的切片。这意味着把一段长度为0的序列赋值给一段长度不为0的切片等于删除,把长度不为0的序列赋值给长度为0的切片等于添加。

>>> list_a = [1,2,3,4]

>>> list_a[1:3] = []            #相当于删除1,2号元素

>>> list_a

...[1,4]

>>> list_a[0:0] = [999, 888]      #相当于添加两个元素

>>> list_a

...[999, 888, 1, 4]

>>> list_a[1:3] = list("hello")      #段替换

>>> list_a

... [999, 'h', 'e', 'l', 'l', 'o', 4]

元素删除

除了用长度为0的序列来替换要删除的一段外,还可以用del语句,与修改相类似,也可以删除多个元素。例:

>>> list_a = [1,2,3,4]

>>> del list_a[0]         #删除一个元素

>>> list_a

...[2,3,4]

>>> del list_a[0:2]         #删除一段元素

>>> list_a

...[4]

 

4.3.3 列表法

对象.方法(参数)

1 append方法:   在一个列表后面追加一个元素:

>>> list_a = [1,2,3]

>>> list_a.append(4)         #在列表后面追加一个元素4

>>> list_a

...[1,2,3,4]

2 count方法:   查看某个元素在列表中出现的次数:

>>> list_a = [1,2,3,4,1,2,1]

>>> list_a.count(1)

...3

3 extend方法:   用其他列表拓展原有的列表,其他列表的元素被添加到原有列表后面:

>>> list_a = [1,2,3]

>>> list_b = [4,5,6]

>>> list_a.extend(list_b)

>>> list_a

...[1,2,3,4,5,6]

4 index方法:   返回某个元素的索引,如果元素不存在,会引发异常:

>>> list_a = [1,2,3,88,4,5,6]

>>> list_a.index(88)         #返回88的索引

...3

>>> list_a.index(99)         #99不存在,返回错误

...显示出错信息...

5 insert方法:   在序列的某个位置插入一个元素:

>>> list_a = [1,2,3,4]

>>> list_a.insert(2, "Hello")         #在2号位置插入'Hello'

>>> list_a

...[1,2,'Hello', 3,4]         #插入不是替换,所以元素3还在

>>> list_a.insert(10, 'world')      #10号位置不存在,'world'直接插到序列末

>>> list_a

...[1,2,'Hello',3,4,'world']

6 pop方法:   移除列表某个位置的元素并返回该元素,如果没指定要移除元素的索引,pop方法默认移除最后一个元素。

>>> list_a = [1,2,3,4]

>>> list_a.pop()         #移除最后一个元素

...4

>>> list_a

...[1,2,3]

>>> list_a.pop(0)      #移除0号元素

...1

>>> list_a

...[2,3]

7 remove方法: 移除序列中第一个与参数匹配的元素, 注意是第一个而不是所有:

>>> list_a = [1,2,88,3,4,88,5,6]

>>> list_a.remove(88)         #移除第一个88

>>> list_a

...[1,2,3,4,88,5,6]         #第二个88没有被删除

8 reverse方法:   将列表改为倒序:

>>> list_a = [1,2,3,4]

>>> list_a.reverse()

>>> list_a

...[4,3,2,1]

9 sort方法:   对列表进行排序,默认为升序:

>>> list_a = [4,6,2,7,1,8]

>>> list_a.sort()

>>> list_a

...[1,2,4,6,7,8]

sort可以传入其它参数,它们是key, cmp, reverse

key和cmp参数都是接受一个函数,注意是函数!这两个函数在比较前调用,作用于元素上返回一个结果,元素进行比较时根据这个结果进行。

其中key是带一个参数的函数。用来为每个元素提取比较值。例:

>>> names = ['Judy', 'Peler', 'Perkins']

>>> names.sort(key=len)   #按名字长度排序,注意len函数不用输入圆括号

>>> names

...['Judy', 'Peler', 'Perkins']

cmp是带两个参数的比较函数,形式为cmp(e1, e2), 返回.值为负时代表e1<e2, 为0时代表e1==e2, 为正是代表e1>e2。但这个结果如果用到排序上,我现在还不清楚。以后用到再说。

reverse接收一个bool型变量, 为True时,将序列反序。

key, cmp默认值为None, reverse的默认值为False.

如上例中,改成:

>>> names.sort(key=len, reverse=True)         #根据元素长度排序,倒序

>>> names

...['Perkins', 'Peler', 'Judy']

回上部

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2017-02-09 12:09  青苹末末  阅读(152)  评论(0编辑  收藏  举报

导航