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

python 列表小总结

2014-11-22 22:18 363 查看
列表是一种可变的数据类型,他由一系列的元素组成,这一系列可以使任何类型的元素,可以是不同类型的元素。列表,不过是一个有序的序列而已,用来组织一堆有规则或者无规则的数据。

1、列表创建和赋值:

        list_name=[element1,element2,element3,...]

    列表中可以添加任何类型的元素,如下的例子:

>>> list=[1,2.5,'a','abc',[5,6],(7,8)]
>>> print list
[1, 2.5, 'a', 'abc', [5, 6], (7, 8)]


    如上,一个列表中可以添加整数、浮点数、字符、字符串、另一个列表、元组等各种不同的数据类型。

2、添加元素:

    列表对象在Python中是List类,python为List类提供了append方法,用来在列表的尾部添加一个元素,如下:

>>> list_1=[1]
>>> list_1.append(2)
>>> list_1.append('hello')
>>> print list_1
[1, 2, 'hello']


    append的参数类型为object,即可以为List添加任何类型的元素。使用点号来调用append方法。

    List类还有一个方法insert,用于将元素插入到列表中指定索引的位置,语法如insert(index,value),即往index索引的位置插入值为value的元素,后边的元素依次往后移。如下:
>>> list_2=[1,2,3,4,5,6]
>>> list_2.insert(1,'hello')
>>> list_2.insert(4,'world')
>>> print list_2
[1, 'hello', 2, 3, 'world', 4, 5, 6]


3、删除元素:

列表的删除使用remove()方法,该方法用于移除列表中指定值的第一个匹配值。如果元素不存在,python将抛出ValueError异常。如下:
>>> list=[1,2,3,4,5]
>>> list.remove(3)
>>> print list
[1, 2, 4, 5]


从一个列表中删除元素还可以用del语句来实现,该语句将删除列表中指定索引位置的元素。如下:
>>> list=[1,2,3,4,5]
>>> del list[2]
>>> print list
[1, 2, 4, 5]


【补刀】:使用pop()方法也可以删除指定位置的列表元素,例如:

>>> list1 = ['a', 'b', 'c', 22 ]
>>> list1.pop( 1 ) #可以删除索引为1的元素
'b'
>>> print list1
['a', 'c', 22]
>>> list1.pop( -2 ) #可以删除索引为(-2 + 3)的元素
'c'
>>> print list1
['a', 22]


4、分片(slice)操作:

就像dota中每个英雄都有一个灵魂技能一样,我感觉分片操作就是列表的灵魂技能。这个操作可以随意的取出列表中的任何一部分。分片操作中有两个索引,指的是从第一个索引到第二个索引中所指定的所有元素(不包含第二个索引所指向的元素)。格式如:list_name[m:n]。

>>> list_1=['p','y','t','h','o','n']
>>> list_1[2:]=['q','t']
>>> print list_1
['p', 'y', 'q', 't']


如果没有指定分片的后一个索引,那么指的是从第一个索引元素到最后一个元素。
>>> list_1[2:2]=['h','e','l','l','o']
>>> print list_1
['p', 'y', 'h', 'e', 'l', 'l', 'o', 'q', 't']


接上边的代码,这里list_1[2:2],用一个与原序列不等长的序列将一个分片替换掉,这里替换的是一个空的分片。实际上的操作其实是插入了一个序列。

以此类推,使用这种方法来删除元素其实也是可行的。

5、负数索引:

在列表中让我感觉到跟普通的C数组最大不同的就是使用负数的索引。负数索引从列表的尾部开始计数,最尾端的元素索引表示为-1,然后依次往前是-2,-3....以此类推。
>>> test_list=['hello','world','python']
>>> print test_list[-2]
world


分片处理之中也是可以使用负数的索引的,其实我觉得python解释的时候负数与正数都是一样的,只是按照不同的规则表示的列表中的元素而已。
>>> test_list=[1,2,3,4,5,6]
>>> list_2=test_list[1:4]
>>> list_3=test_list[-3:-1]
>>> list_4=test_list[0:-2]
>>> print list_2
[2, 3, 4]
>>> print list_3
[4, 5]
>>> print list_4
[1, 2, 3, 4]


如上代码,有了负数索引的规定,其他的一切操作都是与正数相同的,我想这个机制大概只是为了让程序员更方便而定义的吧。

【补刀】:要搞懂负数索引的机制可以参考我的原创文章《根据源码分析python列表的插入、抛出操作时当条目索引为负数时的处理》

6、列表的连接:

列表连接总共有两种实现方式,一种是调用extend()方法,这个方法其实很简单,以一个列表作为参数,这个列表就是接在另一个列表之后的列表。

>>> list_1=[1,2,3,4,5]
>>> list_2=[6,7,8]
>>> list_1.extend(list_2)
>>> print list_1
[1, 2, 3, 4, 5, 6, 7, 8]


最神奇的的是,列表的连接甚至可以使用运算符+、+=或*。来进行列表操作。如下:
>>> list_1=[1,2,3]
>>> list_2=[4,5,6]
>>> list_3=list_1+list_2
>>> print list_3
[1, 2, 3, 4, 5, 6]
>>> list_1+=list_2
>>> print list_1
[1, 2, 3, 4, 5, 6]
>>> list_4=list_1*3
>>> print list_4
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]


7、列表的查找:

这个就没啥技术含量了。。。无非就是按照index找value,按照value找index。

index()这个方法就是根据value找index的方法。返回值就是固定值对应的index。‘

>>> list_1=[4,3,2,1]
>>> print list_1.index(3)     #这句是根据value找index
1
>>> print list_1[3]           #这句是根据index找value
1
>>> 4 in list_1               #这是判断一个元素是否在列表中
True


8、列表的排序:

列表的排序需要使用List类中的sort()方法。sort方法并不是返回一个列表,是直接修改原来的列表。所以如果不想被修改的话最好有备份下。

sort()方法默认是按照升序排列的:
>>> list_1=[3,4,2,5,1]
>>> list_1.sort()
>>> print list_1
[1, 2, 3, 4, 5]


sort方法有一个可选的参数reverse,reverse是反转的意思。这个值默认是False,表示升序排序。如果设置为True,则进行降序排序。

刚才异想天开,sort方法对于不同的数据类型是怎么排序的呢?果断试了一下。。。
>>> list_1=[(9,1),'a','abc',5,4,2,7,8]
>>> list_1.sort()
>>> print list_1
[2, 4, 5, 7, 8, 'a', 'abc', (9, 1)]


事实证明python是先对不同的数据类型排序,然后对每种数据类型再进行分别排序的。

9、列表的反转:

reverse()方法用于将列表中的元素反向存放:

>>> list_1=[1,2,3,4,5]
>>> list_1.reverse()
>>> print list_1
[5, 4, 3, 2, 1]


初学python不久,看到此文,感觉总结得比较详细,能让读者对python列表的基本用法有一个整体的认识。所以转载来与大家分享!

正文转自 http://m.blog.chinaunix.net/uid-27040911-id-3440198.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息