百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

python序列之列表详解(python列序类型)

xsobi 2025-04-08 20:15 21 浏览

Python中除了字符串外,还有另外两种序列:列表和元组,他们都可以包含零个或多个元素,而且并不要求所含元素的类型相同,每个元素都可以是任何Python类型对象。

为什么Python要同时设计列表和元组这两种序列结构呢?这是因为元组和字符串类似是不可变的,当你给元组赋值时,这些值便会被固定在元组中而无法修改。而列表是灵活可变的,可以随意插入或者删除其中的元素,结构更灵活,用处也更强大。

一:列表创建

使用[ ]或者list[ ]创建列表

Bash
number=[1,2,3]
s=['lily','jude']
mix=[1,'hello',[1,2,3],3.14]      #混合列表
empty=[]                                #也可以创建一个空的列表
> list('jude')                            # 使用list函数创建
['j','u','d','e'] 

二:列表操作

2.1,通过索引获取元素,索引值从0开始

Bash
name=['lucy','lily',['china','usa'],'007','anna','mei']
name[0] >>> 'lucy'
name[1] >>> 'lily'
name[-1] >>> 'mei'  #获取最后一个元素,依次类推
name[2][1] >>>'usa'   #针对嵌套的列表结构,可多次通过索引获取

2.2,列表分片获取

当需要从列表一次性取出多个元素时,需要通过列表分片的方式来实现,

其基本形式是:列表名[左索引值:右索引值],左右索引值都可以省略,

左索引值省略时表明,列表元素从0开始,右索引值省略表示包含左索引值右边的所有元素。

注意:分片其实是创建原列表的一个拷贝

member = ['php','python','java','sql']        
member[1:3] >>>['python','java']            #member本身元素并没有发生变化,相当于生成了包含元素1和2的新列表
member[:3] >>>['php','python','java']     #表示从第0个索引值开始
member[1:] >>>['python','java','sql']       #表示从左索引值开始到列表右边所有元素
member[:] >>>['php','python','java','sql']      #相当于复制了一份原列表

分片操作可以接收第三个参数,也就是步长,格式如下:[start:end:step],

step在不指定时默认为1

numb=[1,2,3,4,5,6]
numb[0:6:2] >>>[1,3,5]
numb[::2] >>>[1,3,5]
numb[::-1] >>>[6,5,4,3,2,1]       #相当于复制一个反转的列表

2.3,列表复制

三种方法都可以将一个列表的值复制到一个新的列表

  • copy()函数 用于拷贝一个列表
  • list()函数转换
  • 列表分片[ : ]
list1 = [123,456]
list2 = list1.copy()  
#则list2的值也变为[123,456] 它的功能和列表分片功能 list2 = list1[:]作用是一样的;
#他们两个与赋值运算符=是有区别的,前者是在内存中重新申请一个空间并存放列表的值,
=则是将列表的地址直接赋值给了另一个列表,
举例说明两者带来的区别:
list1 = [1,3,5]
list2 =list1
list3 = list1.copy()
list1.append('python')
list2 >> [1,3,5,'python']
list3 >> [1,3,5]

2.4,列表排序


经常需要将列表按元素值进行排序,python提供了两个函数

  • list.sort(reverse=False) :直接改变原列表结构,默认升序排列,
  • sorted(list) :返回排序后的结果,相当于复制了一个列表,原列表不变

如果列表中元素都是数字,会默认安装从大小大的升序排列,如果元素都是字符串,则会按照字母表顺序排列。

进阶用法:

sort(func,key,reverse) func和key分别设置排序的算法和关键字,

reverse=False表示正序排列,为True颠倒顺序,默认正序

a=[1,5,3,99,6]
a.sort()  
a >> [1,3,5,6,99]
sorted(a)           #内置函数sorted,返回排序后的结果,相当于复制了一个列表,原列表不变
>> [1,3,5,6,99]

2.5,添加元素

  • append(str):添加元素至列表尾部
  • extend([]):将一个列表合并到另一个列表中,等价于 +=
  • insert(index,str):在指定位置插入元素
>>> number=['lucy','lily']
#append函数将元素添加到列表末尾
>>> number.append('007') 
    ['lucy','lily','007'] 
#extend函数将列表添加到列表的末尾
>>> number.extend(['anna','mei']) #等价于 number+=['anna','mei']  
    ['lucy','lily','007','anna','mei']
#insert()方法
>>> number.insert(0,'ken')
    ['ken','lucy','lily','007','anna','mei']
**连接操作符,两个列表直接相加可以得到合并之后的新列表
a,b=[1,2],[3,4]
>>> a+b
    [1,2,3,4]
>>> a*2 
    [1,2,1,2]

2.6 删除列表元素

  • remove(str):删除指定值的元素
  • del(index) : 删除指定位置的元素
  • pop(num=-1) :删除指定位置的元素(默认删除最后一个元素),该函数返回删除的元素
  • clear() :用于删除列表中的所有元素,变成一个空的列表
name=['lucy','lily','007','anna','mei']
>>> name.remove('lucy')
    ['lily','007','anna','mei']

>>> del name[1]
    ['lily','anna','mei']

>>> name.pop() 
'mei'
>>> name
['lily','anna']
>>> name.pop(1)
    'anna'
>>> name
['lily']

list1 = [1,1,2,3,4]
>>> list1.clear() 
>>> list1
    []

2.7,使用in判断值是否存在

判断列表中是否存在该元素,存在返回True

name=['lucy','lily','007','anna','mei']
>>> '007' in name
True

2.8,使用join()转换为字符串

注意:join()其实是字符串方法,不是列表的方法,不能通过suit.join()进行调用。

join() 是字符串分割split()的逆过程

suit=['apply','orange','peer']
>>> '# '.join(suit)
'apply# orange# peer'

2.9,元素计数

使用count()可以计算某一个特定元素在列表中出现的次数

#count计算参数在列表中出现的次数
list1.count(1) >>> 2 

2.10,获取列表长度及列表反转

  • len():返回列表的长度
  • reverse():没有返回值,对原列表的进行反转而不是复制一个
list1=[1,2,3,1,4]
#计算元素个数
>>> len(list1) 
5 
#列表反转
>>> list1.reverse() 

>>> list1
[4, 1, 3, 2, 1]

相关推荐

5.5英寸触屏,搭载“安卓系统”的智能计算器评测:这设计挺脑洞

“计算器”可以说是我们日常生活中较为常用的一款电子产品,纵使手机上也有计算器功能,且足以替代实物计算器,但现在还是有很多人习惯用实物计算器,例如;做批发的店铺老板,计算器就放在店铺显眼位置,结账时顺手...

Android之父晒新款手机,造型酷似遥控器

安迪·鲁宾大家可能并不陌生,鲁宾曾一手创建了安卓操作系统,被外界誉为“安卓之父”。2015年鲁宾又创立智能手机公司EssentialProductsInc,还获得亚马逊和腾讯的投资。在筹备两年后,...

WP8.1的IE11为何不支持淘宝网触屏版?

IT之家(www.ithome.com):WP8.1的IE11为何不支持淘宝网触屏版?众所周知IE浏览器有自己的一个内核(简称IE内核),WP8.1系统的自带移动版IE11浏览器,但为什么iOS、An...

手机屏幕失灵乱跳乱点,屏幕时好时坏是怎么回事?

我们平时在使用手机的时候,如果我们的手机经常出现屏幕不受控制,手机屏幕会出现乱跳自己乱点的一些情况,这是什么问题呢?出现这种问题我们应该怎么去解决呢,今天我们九一手机维修就来跟大家说说这个问题该怎样去...

跨界表演有风险,百事手机 P1 众筹宣告失败

大家还记得曾经轰动一时的百事手机P1吗?这款10月份曝光、11月份众筹的手机在京东众筹失败,已经退款。想要喝着百事可乐玩着百事手机的网友,赶紧该干嘛干嘛去吧。据悉,百事可乐P1采用铝合金...

“傀儡”病毒感染超10万台手机

本报讯(记者孙奇茹)手机在没人操作的情况下,竟然自己亮屏、执行一些动作。这不是闹鬼,而是手机中毒了。日前,猎豹移动安全实验室发出警报,全球首个伪造模拟用户操作的安卓病毒被截获,并被命名为“傀儡(Go...

Android事件分发机制

事件分发机制Android事件分发是指在Android系统中,当用户触摸屏幕或执行其他操作时,系统如何将这些事件传递给正确的视图或组件进行处理的过程。Android事件分发遵循一种称为"事件分...

Android让视图像玻璃一样破裂

AndroidUILibs之BrokenView1.说明BrokenView让视图产生玻璃破裂的效果。注意:该库只能在API14以上的设备上运行2.配置在模块的build.gradle上面添加...

车载大屏爽翻了?英国研究机构:大尺寸触摸屏比酒驾更危险

大屏不仅蔓延到手机,汽车也不例外,得益于更加直观的人机交互体验,车载触控大屏逐渐成为越来越多车企的主流选择。然而最新的一项研究证明——触控大屏比酒驾、毒驾更危险。日前,英国一项道路安全研究报告指出,当...

安卓系统被曝严重安全漏洞 恶意程序竟能秘密拍照或录制音视频

央视网消息:据今日俄罗斯网站20号报道,以色列一家知名网络安全公司宣称发现谷歌、三星等制造商生产的安卓手机,系统存在严重安全漏洞,黑客能够在未经手机机主许可的情况下,操控安卓手机秘密拍摄照片、录制视...

央视曝光:安卓系统曝漏洞!有人可能正在用你的手机...

近日,谷歌、三星等制造商生产的安卓手机,被曝出系统存在严重安全漏洞。黑客能够在未经手机机主许可的情况下,操控安卓手机秘密拍摄照片、录制音视频并上传。点击下方,先看视频↓↓↓视频来源:央视新闻利用漏洞!...

安卓系统曝漏洞!有人可能正在用你的手机秘密拍照

近日,谷歌、三星等制造商生产的安卓手机,被曝出系统存在严重安全漏洞。黑客能够在未经手机机主许可的情况下,操控安卓手机秘密拍摄照片、录制音视频并上传。利用漏洞“恶意应用程序”拍照、录音视频并上传据今日俄...

安卓用户注意了 你的爱机可能会面临新式恶意攻击

据外媒报道,最近,东京早稻田大学的三名学者称,现代Android智能手机容易受到一种名为“Tap'nGhost”的新型攻击,这种攻击可以使不存在的“手指”点击手机屏幕,以采取行动。“Tap'nGh...

Android学习之Touch事件的处理

在移动开发过程当中,我们经常会遇到手势处理和事件触摸的情况,如果不了解整个事件的处理机制,对于开发的同学和码农是非常痛苦的,但是事件触摸的处理确实是一个非常复杂的过程,细讲起来,估计我都能讲迷糊,这里...

办公小技巧:制作模糊查询效果Excel下拉菜单

在Excel单元格中输入特定范围的内容时,一般会利用数据有效性生成下拉列表的方式进行,但如果源列表的内容太多(比方说有数百个),这时再通过下拉列表查找需要的值就很不方便了。如果采用智能感知的模糊查询下...