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的Django框架中的URL配置与松耦合
Jul 15 Python
python交互式图形编程实例(二)
Nov 17 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
Nov 23 Python
Python语言描述KNN算法与Kd树
Dec 13 Python
对Python w和w+权限的区别详解
Jan 23 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
Jun 04 Python
python3实现斐波那契数列(4种方法)
Jul 15 Python
python实现拉普拉斯特征图降维示例
Nov 25 Python
Python3实现将一维数组按标准长度分隔为二维数组
Nov 29 Python
在django中使用apscheduler 执行计划任务的实现方法
Feb 11 Python
只需要这一行代码就能让python计算速度提高十倍
May 24 Python
python中的getter与setter你了解吗
Mar 24 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
PHP4实际应用经验篇(7)
2006/10/09 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
javascript数组使用调用方法汇总
2007/12/08 Javascript
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
jq实现酷炫的鼠标经过图片翻滚效果
2014/03/12 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
jQuery查找节点方法完整实例
2016/09/13 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
2018/01/15 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
2020/01/18 Javascript
基于python编写的微博应用
2014/10/17 Python
pandas通过loc生成新的列方法
2018/11/28 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
pytorch中的自定义数据处理详解
2020/01/06 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
利用HTML5绘制点线面组成的3D图形的示例
2015/05/12 HTML / CSS
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
家教广告词
2014/03/19 职场文书
股份合作协议书
2014/04/12 职场文书
2015年高校就业工作总结
2015/05/04 职场文书
新学期开学标语2015
2015/07/16 职场文书
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python