Python内置数据结构之list

Python内置数据结构之list

列表是Python中最具灵活性的有序集合对象类型,与字符串不同的是,列表可以包含任何种类的对象:数字、字符串甚至其他列表。

同样,与字符串不同的,列表都是可变对象,它都支持在原处修改的操作,可以通过指定的偏移量和切片、列表方法调用、删除语句等等方法来实现

Python的列表可以完成大多数集合体数据结构的工作:

列表的主要属性有:

  • 任意对象的有序集合
           从功能上看,列表就是收集其他对象的地方,你可以把它们看做组。同时列表所包含的每一项都保持了从左到右的位置顺序(也就是说,它们是序列)。

  • 通过偏移读取数据
           就像字符串一样,你可以通过列表对象的偏移对其进行索引,从而读取对象的某部分内容。由于列表的每一项都是有序的,那么你也可以执行诸如分片和合并之类的任务

  • 可变长度、异构以及任意嵌套
           与字符串不同的是,列表可以实地的增长或者缩短(长度可变),并且可以包含任何类型的对象而不仅仅是包含有单个字符的字符串(异构)。因为列表能够包含其他复杂的对象,又能够支持任意的嵌套,所以可以创建列表的子列表的子列表等。

  • 属于可变序列的分类
           就类型分类而言,列表支持在原处的修改(它们是可变的),也可以响应所有针对字符串序列的操作,例如,索引、分片以及合并。实际上,序列操作在列表与字符串中的工作方式相同。唯一的区别是:当应用于字符串上的合并和分片这样的操作应用于列表时,返回新的列表。然而列表是可变的,因此它们也支持字符串不支持的其他操作(例如,删除和索引赋值操作,它们都是在原处修改列表)。

  • 对象引用数组
           从技术上来讲, Python列表包含了零个或多个其他对象的引用。列表也许会让你想起指针(地址)数组,从 Python的列表中读取一个项的速度与索引一个C语言数组差不多。实际上,在标准 Python解释器内部,列表就是C数组而不是链接结构。每当用到引用时, Python总是会将这个引用指向一个对象,所以程序只需处理对象的操作。当把一个对象赋给一个数据结构元素或变量名时, Python总是会存储对象的引用,而不是对象的一个拷贝(除非明确要求保存拷贝)

列表list的定义

list(),里面可以什么都不放,也可以放可迭代对象。

1
2
3
4
lst = list()
lst = []
lst = [2, 6, 9, 'ab']
lst = list(range(5))

列表的索引访问

python中list的索引从0开始。绝大多数语言的下标是从0开始的
负数的索引表示从后往前数,由-1开始,-1表示最后一个元素。

1
2
3
4
5
6
7
8
In [6]: lst
Out[6]: [1, 2, 3]

In [7]: lst[0]
Out[7]: 1

In [8]: lst[-1]
Out[8]: 3

如果索引超出范围,将引发IndexError。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
In [9]: lst[-4]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-9-7ea420056b9a> in <module>()
----> 1 lst[-4]

IndexError: list index out of range

In [10]: lst[3]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-10-298ffefac8cf> in <module>()
----> 1 lst[3]

IndexError: list index out of range

修改元素的时候,如果超出索引范围,也会引发IndexError。

数字处理函数:

round(): 四舍五取偶六入  

math模块  
    floor():向下取整 

    ceil():向上取整 

    int():取整数部分 

    //:整除且向下取整

    min():取最小值 

    max():取最大值  

    pow(x,y)等价于x**y  

    math.sqrt():开平方 

进制函数,返回值是字符串 

    bin():二进制转换  

    oct():八进制转换  

    hex():十六进制转换  

random模块
    randint(a,b) 返回a,b之间的整数

    choice(seq)从非空序列的元素中随机挑选一个元素

    randrange([start,] stop [,sttep])从指定范围内,按指定基数递增的集合中获取一个随机数

    random.shuffle(list) ->None 就地打乱列表元素

    sample(population, k)从样本空间或总体中随机取出k个不同的元素,返回一个新的列表

len(list): 显示列表的元素个数

列表内建函数:

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

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

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

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

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

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

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

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

list.sort(cmp=None, key=None, reverse=False):对原列表进行排序

list.clear():  清空列表

list.copy(): 复制列表    
-------------本文结束感谢您的阅读-------------
0%