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

python中的列表(list)详解

2016-08-17 23:41 507 查看
列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型。列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

Python有6个序列的内置类型,但最常见的是列表和元组。序列都可以进行的操作包括索引,切片,加,乘,检查成员。此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

列表list

定义和初始化 list

定义个空列表

In [1]: li = []

In [2]: type(li)

Out[2]: list

初始化list,list 中的元素没有类型要求,可以是任何类型

In [3]: li = [1,2,’a’,[‘a’,4]]

In [4]: li

Out[4]: [1, 2, ‘a’, [‘a’, 4]]

列表的下标

python中列表的下标是从0开始的。

In [4]: li

Out[4]: [1, 2, ‘a’, [‘a’, 4]]

In [5]: li[2]

Out[5]: ‘a’

In [6]: li[4]

IndexError

Traceback (most recent call last)

in ()

—-> 1 li[4]

IndexError: list index out of range

得到list 长度

In [7]: len(li)

Out[7]: 4

in关键字

在for循环中使用表示遍历list中的所有元素:

In [8]: for x in li:

…:

print x

…:

1

2

a

[‘a’, 4]

in 也可以作为一个二元操作符使用,查找某个元素是否在list中存在:

In [9]: ‘a’ in li

Out[9]: True

del 删除list中某个元素:

In [10]: li

Out[10]: [1, 2, ‘a’, [‘a’, 4]]

In [11]: del li[0]

In [12]: li

Out[12]: [2, ‘a’, [‘a’, 4]]

在python中一切皆为对象,显然,list也是对象,针对于列表对象来说,常用的操作:

In [13]: dir(li)

Out[13]:

[‘add‘,

class‘,

………

str‘,

subclasshook‘,

‘append’,

‘count’,

‘extend’,

‘index’,

‘insert’,

‘pop’,

‘remove’,

‘reverse’,

‘sort’]

查看list对象append方法的帮助信息:

In [14]: help(li.append)

In [15]: li

Out[15]: [2, ‘a’, [‘a’, 4]]

In [16]: li.append(666)

In [17]: li

Out[17]: [2, ‘a’, [‘a’, 4], 666]

extend 方法,接受一个迭代器,将迭代器的所有元素追加到list中:

In [17]: li

Out[17]: [2, ‘a’, [‘a’, 4], 666]

In [18]: li.extend([‘abc’,’cba’])

In [19]: li

Out[19]: [2, ‘a’, [‘a’, 4], 666, ‘abc’, ‘cba’]

insert 方法,li.insert(2,’x’) , li.insert(-1,’mm’) ,在某个索引下标之前插入某个数据。

remove 方法,li.remove(‘a’) ,从list中移除某个元素。

pop 方法,接受一个可选参数index,remove下标所指向的元素,并将钙元素返回,li.pop() , li.pop(2) :

In [19]: li

Out[19]: [2, ‘a’, [‘a’, 4], 666, ‘abc’, ‘cba’]In [20]: li.pop()

Out[20]: ‘cba’

In [21]: li

Out[21]: [2, ‘a’, [‘a’, 4], 666, ‘abc’]

In [22]: li.pop(2)

Out[22]: [‘a’, 4]

In [23]: li

Out[23]: [2, ‘a’, 666, ‘abc’]

count 方法,返回某个值在list出现的次数, li.count(‘a’)

index 方法,返回第一个匹配value的下标:

In [28]: li

Out[28]: [2, ‘a’, 666]

In [29]: li.index(‘a’)

Out[29]: 1

In [30]: li.index(‘b’)

ValueError

Traceback (most recent call last)

in ()

—-> 1 li.index(‘b’)

ValueError: ‘b’ is not in list

还可以指定起始和结束查找的范围参数 li.index(‘a’,2,6)

In [33]: li

Out[33]: [2, ‘a’, 666, ‘a’, ‘a’, ‘b’]

In [34]: li.index(‘a’,2)

Out[34]: 3

sort 方法,直接修改list内容,不返回值. li.sort() ,还可以接受三个可选参数。L.sort(cmp=None, key=None, reverse=False)

reverse 方法。li.reverse()

list的切片

li[i],li[a:b],li[a:e:b]–第三个参数为步长,index每次加几,默认为1

In [40]: li

Out[40]: [‘b’, ‘a’, ‘a’, ‘a’, 666, 2]

In [41]: li[2:4]

Out[41]: [‘a’, ‘a’]

In [43]: li[:2]

Out[43]: [‘b’, ‘a’]

In [44]: li[4:]

Out[44]: [666, 2]

对list 做一次深copy

In [45]: li[:]

Out[45]: [‘b’, ‘a’, ‘a’, ‘a’, 666, 2]

In [46]: li[2:4:2]

Out[46]: [‘a’]

用切片实现list 翻转

In [47]: li

Out[47]: [‘b’, ‘a’, ‘a’, ‘a’, 666, 2]

In [48]: li[::-1]

Out[48]: [2, 666, ‘a’, ‘a’, ‘a’, ‘b’]

得到下标为偶数的list

In [50]: li

Out[50]: [‘b’, ‘a’, ‘a’, ‘a’, 666, 2]

In [51]: li[::2]

Out[51]: [‘b’, ‘a’, 666]

得到下标为奇数的值

In [52]: li[1::2]

Out[52]: [‘a’, ‘a’, 2]

列表的切片操作是一个复制操作,并不对原始列表进行修改。

Python列表操作的函数和方法

列表操作包含以下函数:

1、cmp(list1, list2):比较两个列表的元素

2、len(list):列表元素个数

3、max(list):返回列表元素最大值

4、min(list):返回列表元素最小值

5、list(seq):将元组转换为列表

列表操作包含以下方法:

1、list.append(obj):在列表末尾添加新的对象

2、list.count(obj):统计某个元素在列表中出现的次数

3、list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

4、list.index(obj):从列表中找出某个值第一个匹配项的索引位置

5、list.insert(index, obj):将对象插入列表

6、list.pop(obj=list[-1]):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

7、list.remove(obj):移除列表中某个值的第一个匹配项

8、list.reverse():反向列表中元素

9、list.sort([func]):对原列表进行排序

参考文档:http://www.jb51.net/article/47978.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息