python内置数据类型之列表操作


Posted in Python onNovember 12, 2018

 数据类型是一种值的集合以及定义在这种值上的一组操作。一切语言的基础都是数据结构,所以打好基础对于后面的学习会有百利而无一害的作用。

python内置的常用数据类型有:数字、字符串、Bytes、列表、元组、字典、集合、布尔等

1.什么是列表

lst[#] 通过下标访问,从0开始。
ps:如果#超过下标的范围时候会出现IndexError的错误。
如果#为负号,则索引从右边开始,#无论为正负均有范围,超过范围会报错。
lst = list(range(0,9)) #生产列表
l1 = lst[3] #通过正索引访问元素
l2 = lst[-1] #通过负索引访问元素
print(l1)
print(l2)
#说明,如果正负索引超界,则会报错。
#错误代码:IndexError: list index out of range

2 .列表元素查找

查找元素:L.index( value,[start[stop]])方法:返回查找到的第一个value值的索引。

start表示从第几个索引开始,stop表示到哪个索引结束,均可省略。

b.但是如果出现stop,其前必须有start值,索引时包含start位置不包含stop位置。

c.如果匹配不到元素,则返回:ValueError: xx is not in list

d.index查找元素的时间复杂的为O(n)

lst = list(range(11,19)) 
print(lst)
[11, 12, 13, 14, 15, 16, 17, 18]
lst.index(13) #13的索引值为2

统计元素:L.count(value) 统计列表中出现多少个value值。

len(L),求list列表的长度。

count方法的时间复杂的为O(n)

3 .列表元素操作

a.修改元素

直接赋值,L[#]=value。

#为列表的索引值

索引不能越界,会报错IndexError: list assignment index out of range

修改列表自身

lst = list(range(1,10)) 
lst[2]=111 
lst[4]=123
lst
[1, 2, 111, 4, 123, 6, 7, 8, 9]

b.增加元素

L.append(#),修改L本身,并且追加在列表末尾。

L.extend([#1,#2,#3]) , 将可迭代对象扩展到列表末尾。

L+[‘a','b','c'] ,不修改列表本身,返回一个新的列表。

c.插入元素

L.insert(idx,#),将在该idx前插入#,会修改L本身。

当idx为正数,且大于列表本身的索引数,

会实现append方法将插入在元素最末尾;当idx为负数,且小于-len(L)+1时将会插入到列表最前。

append的时间复杂度是O(1),效率和数据的规模无关。

insert的时间复杂度是O(n),效率个数据规模正相关。

d.移除元素

L.remove(value),修改自身,从左到右删除第一个匹配到的值。

L.pop(idx),返回并删除索引指向的值。如果不指定idx,将删除列表最后的元素。

pop不指定值时,时间复杂度是O(1)的;

pop指定idx时,时间复杂度是O(n)的。

L.clear(),删除索引元素。慎用,会引起垃圾回收。

e.列表反转

reverse(),修改自身,反转列表元素。

f.列表排序

L.sort(),排序操作,修改自身,升序排列。 L.sort(reverse=True),逆序排列。

4 .列表进阶

1. 列表复制

copy()方法,列表浅拷贝。遇到引用类型,仅仅复制引用地址。当原来引用类型的值发生变化时,拷贝后的列表的值也随之发生变化。

lst = list(range(4))
lst1 = lst.copy()
print(lst1)
#浅拷贝特性说明
lst = [1,[2,3,4],5]
lst1 = lst.copy()
lst1[1][2] = 11
lst[1][0]=22
print(lst)
print(lst1)
#lst = lst1,引用内的值改变,列表均发生变化。
[0, 1, 2, 3]
[1, [22, 3, 11], 5]
[1, [22, 3, 11], 5]

copy模块下的deepcopy() 提供了深拷贝方法。

import copy
lst = [1,[2,3,4],5]
lst1 = copy.deepcopy(lst)
lst1[1][2] = 11
print(lst)
print(lst1)
#lst != lst1 对比lst.copy方法。
[1, [2, 3, 4], 5]
[1, [2, 3, 11], 5]

2. 打乱列表

需要引入random模块

# random.shuffle(list)
lst = [1,323,4,-3,[1,3],None,(1,34),{1:3}]
random.shuffle(lst) #修改自身,返回值为None,不能使用其他空间接受。
lst #通过shuffle打乱后列表的顺序发生变化。
[323, {1: 3}, None, [1, 3], 1, -3, 4, (1, 34)]

random模块的其他对象:

import random
print(random.randint(1,11)) #返回[1,11] 之间的整数,注意左右闭区间
print(random.choice(range(11))) #从非空序列中随机挑选一个整数
#randrange ([start,] stop [,step]) 从指定的范围内,按指定基数递增的集合中获取一个随机数
random.randrange(1,7,2) #从[1,7)中,步长为2的数字中获取一个数

总结

以上所述是小编给大家介绍的python内置数据类型之列表,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python实现拼接多张图片的方法
Dec 01 Python
python递归查询菜单并转换成json实例
Mar 27 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 Python
PyQt5使用QTimer实现电子时钟
Jul 29 Python
python 发送json数据操作实例分析
Oct 15 Python
wxPython+Matplotlib绘制折线图表
Nov 19 Python
详解Python中namedtuple的使用
Apr 27 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
Python实现列表索引批量删除的5种方法
Nov 16 Python
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
Jun 03 Python
python随机打印成绩排名表
Jun 23 Python
用 Python 定义 Schema 并生成 Parquet 文件详情
Sep 25 Python
python pandas读取csv后,获取列标签的方法
Nov 12 #Python
对pandas的行列名更改与数据选择详解
Nov 12 #Python
Python numpy.array()生成相同元素数组的示例
Nov 12 #Python
浅谈numpy生成数组的零值问题
Nov 12 #Python
python生成多个只含0,1元素的随机数组或列表的实例
Nov 12 #Python
python 构造三维全零数组的方法
Nov 12 #Python
对pandas中两种数据类型Series和DataFrame的区别详解
Nov 12 #Python
You might like
一个图形显示IP的PHP程序代码
2007/10/19 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
2011/10/03 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
php文件上传的两种实现方法
2016/04/04 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
jQuery $.data()方法使用注意细节
2012/12/31 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
基于Javascript实现弹出页面效果
2016/01/01 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
node.js中的事件处理机制详解
2016/11/26 Javascript
jquery操作ID带有变量的节点实例
2016/12/07 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
JS获得一个对象的所有属性和方法实例
2017/02/21 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
详解vuex commit保存数据技巧
2018/12/25 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
2019/04/02 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
web.py中调用文件夹内模板的方法
2014/08/26 Python
Python中join和split用法实例
2015/04/14 Python
Python的函数的一些高阶特性
2015/04/27 Python
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
python实现人性化显示金额数字实例详解
2020/09/25 Python
python os.listdir()乱码解决方案
2021/01/31 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
大学生毕业自我鉴定范文
2014/02/03 职场文书
竞聘上岗演讲稿
2014/05/16 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
加入学生会自荐书
2015/03/05 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL