2015/9/1Python基础:列表

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

列表和字符串类型很相似,是同样的序列式数据类型。

但是字符串只能由字符组成,列表可以保留任意数目的Python对象的灵活的容器。

Python的列表比C的数组要灵活,数组里面只能是一种类型,列表可以有多种。

列表可以执行pop,empt,sort,reverse等操作,可以添加或减少元素。可以和其他的列表结合或者把一个列表分成几个,可以对单独的元素执行insert,update或者remove操作。

创建列表是用[]来定义的,也可以用工厂方法创建

>>> aList = [12,'abc',1.23,['list','in']]>>> anotherList = [None,'something']>>>PRintaList

[12,'abc', 1.23, ['list','in']]>>>printanotherList

[None,'something']>>> aList =[]>>>printaList

[]>>> list('Python')

['P','y','t','h','o','n']

访问列表的值用索引或者切片的方法。这里不赘述。

更新列表

可以像C一样,指定一个索引或者索引范围来更新元素。或者使用append()方法来追加元素到列表中去

>>> aList = list('a1bc')>>>printaList

['a','1','b','c']>>> aList[0] = 1.2

>>>printaList

[1.2,'1','b','c']>>> aList[1:2] = ['x',3]>>>printaList

[1.2,'x', 3,'b','c']>>> aList.append(4.56)>>>printaList

[1.2,'x', 3,'b','c', 4.56]

删除列表中的元素或者列表(本身)

要删除元素的索引可以使用del语句,否则使用remove()方法

>>>aList

[123,'abc','float replacer', ['inner','list'], (7-9j)]>>>delaList[1]>>>aList

[123,'float replacer', ['inner','list'], (7-9j)]>>> aList.remove(123)>>>aList

['float replacer', ['inner','list'], (7-9j)]

还可以用pop()方法来删除并从列表中返回一个特定对象。

一般来说不需要去删除一个对象列表,如果想明确地删除一整个列表可以用del语句:del aList

Python没有专门用于列表类型的操作符,但是有属于自己的方法。列表有列表解析,是结合了列表的方括弧和for循环。以后会再专门学到列表解析。届时写一个列表解析的内容,这里只写一个简单的例子:

>>> [ i * 2foriin[8, -2, 5] ]

[16, -4, 10]>>> [ iforiinrange(8)ifi % 2 ==0 ]

[0,2, 4, 6]

内建函数

一些序列类型的函数在列表里非常有用如:

max()、min()、sorted()、reversed()、enumerate()、zip()还有sum()

列表类型内建函数 只有range()函数

列表类型的内建函数

列表有自己的方法,在之后学习。可以用dir()方法来得到一个列表对象的所有方法和属性。

>>>dir(list)

['__add__','__class__','__contains__','__delattr__','__delitem__','__delslice__','__doc__','__eq__','__format__','__ge__','__getattribute__','__getitem__','__getslice__','__gt__','__hash__','__iadd__','__imul__','__init__','__iter__','__le__','__len__','__lt__','__mul__','__ne__','__new__','__reduce__','__reduce_ex__','__repr__','__reversed__','__rmul__','__setattr__','__setitem__','__setslice__','__sizeof__','__str__','__subclasshook__','append','count','extend','index','insert','pop','remove','reverse','sort']

方法

作用

list.append(obj)

向列表中添加一个对象obj

list.count(obj)

返回一个对象obj 在列表中出现的次数

list.extend(seq)

把序列seq 的内容添加到列表中

list.index(obj, i=0,j=len(list))

返回list[k] == obj 的k 值,并且k 的范围在 i<=k<j;否则引发ValueError 异常.

list.insert(index, obj)

在索引量为index 的位置插入对象obj.

list.pop(index=-1)

删除并返回指定位置的对象,默认是最后一个对象

list.remove(obj)

从列表中删除对象obj

list.reverse()

原地翻转列表

list.sort(func=None,key=None,reverse=False)

以指定的方式排序列表中的成员,如果func 和key 参数指定,则按照指定的方式比较各个元素,如果reverse 标志被置为True,则列表以反序排列.

核心笔记:

可以改变对象值的可变对象的方法是没有返回值的!

Python 初学者经常会陷入一个误区:调用一个方法就返回一个值.最明显的例子就是

sort():

>>> music_media.sort()#没有输出?>>>

在使用可变对象的方法如sort(),extend()和reverse()的时候要注意,这些操作会在列表

中原地执行操作,也就是说现有的列表内容会被改变,但是没有返回值!是的,与之相反,字符串

方法确实有返回值:

>>>'leanna, silly girl!'.upper()'LEANNA, SILLY GIRL!'

温习一下,字符串是不可变的 -- 不可变对象的方法是不能改变它们的值的,所以它们必须

返回一个新的对象.

如果用列表一定要返回一个对象,可以使用reversed()和sorted()。

列表特殊特性

用列表构建其他数据结构

用列表容器和可变的特性可以轻松的构造其他数据结构,如堆栈和队列。

具体实现过程不在博文里赘述了。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航