UC头条:聊聊python中的list——基本操作

在学习数据结构的时候,从老师和同学口中得知了python中用于实现线性表的list(列表)。在查阅相关资料后,感觉这真是一个有趣又好用的数据结构。于是打算写几篇博客,加深对list原理和使用方法的理解。

先来讲讲list的定义和基本用法吧~

定义: 列表是由一系列按特定顺序排列的元素组成。此时表中的元素不再像c,cpp, java一样只能是同一类型,而是可以根据自己的需求,添加任意类型的元素(数,字符串,列表,集合,元组,字典)且长度不限(具有和vector类似的内存模型)。

基本操作:

1.定义列表

Python 中用方括号 [ ] 来表示列表,并且用逗号来分隔其中的元素。

student =[123.21,'xiaomin','小红']#python中的单双引号没有区别print(student)#输出[123.21, 'xiaomin', '小红']

2.访问元素

定义好列表之后很自然的就是去访问类表中的元素啦~ python中的访问方式和java类似,都是使用索引(一个数字,唯一的描述每一个元素在列表中的位置)进行访问。

student =[123.21,'xiaomin','小红']print(student[1])#输出xiaomin

2.1关于索引为负的讨论:

在c和cpp中:

如果数组的索引为负,在编译时不会出现问题,当时在运行时则会出现异常并退出。(甚至还可能由于随机访问到了不该访问的内存,被电脑的杀毒软件视作病毒藍)

在java中:

由于抛出异常机制的存在,当数组索引为负时,将会出抛'ArrayIndexOutOfBoundsException'异常。

而在python中就大不一样喽!

在 Python 中,索引值可以为负数,负数的意思并不是说第一个位置之前还有并行时空的元素,而是表示从数组后面的位置开始计算,比如 -1 就代表最后一个元素,-2 就代表倒数第二个元素。

student =[123.21,'xiaomin','小红']print(student[-1])#输出小红

虽然索引可以为负数,但不意味着这个负数可以随便选取,索引的绝对值需小于数组的长度

例如:

student =[123.21,'xiaomin','小红']print(student[-10])#会输出IndexError: list index out of range

3.添加元素

3.1 append

添加单个元素到List的尾部, 只接受一个参数,参数可以是任何数据类型,被添加的元素在List中保持着原先结构类型。

例1.添加字符串

student =[123.21,'xiaomin','小红'] student.append('lalala')print(student)#输出:[123.21, 'xiaomin', '小红', 'lalala']

例2.添加元组

student =[123.21,'xiaomin','小红'] temp =('胖虎','小夫','大雄') student.append(temp)print(student)#输出:[123.21, 'xiaomin', '小红', ('胖虎', '小夫', '大雄')]

例3.添加列表

student =[123.21,'xiaomin','小红'] temp =['胖虎','小夫','大雄'] student.append(temp)print(student)#输出:[123.21, 'xiaomin', '小红', ['胖虎', '小夫', '大雄']]

可以看出原有的数据类型并没有发生改变。

3.2 extend

extend 和 append 的区别在于:extend 不会把列表或者元祖视为一个整体,而是把它们包含的元素逐个添加到列表中

例1.添加元组

student =[123.21,'xiaomin','小红'] temp =('胖虎','小夫','大雄') student.extend(temp)print(student)#输出:[123.21, 'xiaomin', '小红', '胖虎', '小夫', '大雄']

例2.添加列表

student =[123.21,'xiaomin','小红'] temp =['胖虎','小夫','大雄'] student.extend(temp)print(student)#输出:[123.21, 'xiaomin', '小红', '胖虎', '小夫', '大雄']

可以看到元组和列表的元素都被拆开。

3.3 insert

insert语法格式: listname.insert(index , obj)

insert 允许使用索引(也就是元素插入的位置),向list中插入元素。当索引值大于等于list的长度时,一律视为在list尾部插入一个元素

而当插入列表或者元祖时,insert 也会将它们视为一个整体,作为一个元素插入到列表中,这一点和 append 是一样的。

student =[123.21,'xiaomin','小红'] temp =('胖虎','小夫','大雄') student.insert(314, temp)print(student)#输出:[123.21, 'xiaomin', '小红', ('胖虎', '小夫', '大雄')]

4.修改元素

4.1 修改单个元素

修改单个元素就很简单啦,只需要使用索引赋值就可以了~

student =[123.21,'xiaomin','小红'] student[0]=3.14#使用正索引 student[-1]='胖虎'#使用负索引print(student)#输出:[3.14, 'xiaomin', '胖虎']

4.2修改一组元素

python允许使用切片操作进行区间修改。

戳我看切片详解哦~

例1.指定起始索引和终止索引(注意python的区间是左闭右开

#修改一组元素的值 student =[123.21,'xiaomin','小红'] student[0:2]=['胖虎','小夫']#修改第零个和第一个元素的值,不包括第二个元素print(student)#输出:['胖虎', '小夫', '小红']

在测试的时候发现修改部分的元素数量可以大于指定长度,在修改完指定元素后,将多余元素插入到指定位置的后面。

student =[123.21,'xiaomin','小红'] student[0:2]=['胖虎','小夫','大雄']print(student)#输出:['胖虎', '小夫', '大雄', '小红']

对空切片赋值,相当于插入一组新的元素:

student =[123.21,'xiaomin','小红'] student[1:1]=['胖虎','小夫','大雄']print(student)#输出:[123.21, '胖虎', '小夫', '大雄', 'xiaomin', '小红']

5.删除元素

5.1根据索引值删除元素

python的lis中共有两种操作根据索引值删除元素,一是del,二是pop。下面分别举例讲解:

(1) del 是 Python 中的关键字,专门用来执行删除操作,它不仅可以删除整个列表,还可以删除列表中的某些元素。

删除单个元素的格式为:del listname[index]

输出连续元素的格式为:del listname[start : end]<区间左闭右开>

student =[123.21,'xiaomin','小红']del student[1]#注意这里是方括号,因为不是方法print(student)#输出;[123.21, '小红']student =[123.21,'xiaomin','小红']del student[1:3]print(student)#输出:[123.21]

(2) pop 方法用来删除列表中指定索引处的元素

格式如下:listname.pop(index)

student =[123.21,'xiaomin','小红'] student.pop(1)print(student)#输出:[123.21, '小红']

思考:python的list功能与STL中的list类似,但STL中的list同时具有pop( ) 和push( ) 两个对应的方法,而在python的list中却只有pop( ),这是为什么呢?

5.2根据元素值进行删除

remove 方法用来删除和参数相同的第一个元素。如果需要删除的元素不存在,则会报错。

student =[123.21,'xiaomin','小红'] student.remove('小红')print(student)#输出:[123.21, 'xiaomin']student =[123.21,'xiaomin'] student.remove('小红')print(student)#出现错误:list.remove(x): x not in list

5.3清空列表

clear( )方法用于清空列表

student =[123.21,'xiaomin','小红'] student.clearprint(student)#输出: []

好啦关于列表的基本操作就讲到这里啦~下一篇咱们就来看看list的底层实现,揭开list为什么可以存储各种元素的神秘面纱。

(0)

相关推荐

  • 说说Python中切片是什么?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • python实现矩阵转置的几种方法

    文章目录 (1)方法一.使用numpy转置 (2)方法二.使用zip()函数 (3)方法三.使用python列表表达式[不占用额外空间,"原地修改"] (4)方法四.新建列表B,使 ...

  • 课件3——Python基础

    人生苦短,我用Python " Life is short, you need Python" --Bruce Eckel " Python是什么 是一种面向对象.解释型 ...

  • 【编测编学】零基础学python_06_列表(认识和使用列表)

    认识列表  由一系列按特定顺序排列的元素组成. 你可以创建包含字母表中所有字母.数字0~9或所有家庭成员姓名的列表:也可以将任何东西加入列表中,其中的元素之间可以没有任何关系.鉴于列表通常包含多个元素 ...

  • Python求列表的差集、交集与并集?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • Python基础学习笔记(五)集合与字典

    本节知识大纲: 集合 字典 一.Set 集合的概念 1. set 集合的性质 set 集合是一组无序的且不能重复的集合,打印 set 集合时会自动消除重复的元素项: set 集合用大括号表示: set ...

  • UC头条:八字中的四墓库——辰戌丑未

    点击加载图片 四库与钥匙四库是辰戌丑末,库就是库房,库存.有库就是有百宝箱.保险柜.银行卡.有库就要找开库的钥匙,每个库不但有与之相配的钥匙,还有一把锁.有库有钥匙,只要钥匙配对了就有用能打开,库中物 ...

  • UC头条:罗盘中最重要的内容、地盘24山的排列原因、如何看阴宅

    罗盘最重要的内容 罗盘是博大精深的迷宫,罗盘上呈现出的吉凶观念,主要依据了五行生克理论和阴阳感应理论. 罗盘圈层,最重要的是二十四山和八卦.盘面看起来很复杂,高明的风水师只用记住二十四山就够了. 罗盘 ...

  • UC头条:股票中的首阴是什么意思? 首阴战法是什么意思?

    股票中的首阴是什么意思?在股票中,当它开始上涨时,所有的持筹者都可以不断获利,并获得实现高水平利润的机会.在这方面,当他们在集中抛售时,个股有就会出现阴线,所以此时我们称之为首阴. 股票中的首阴是什么 ...

  • UC头条:家庭教育中, 永远不要低估“暗示”的力量

    你说孩子行,孩子就能行,不行也会行: 你说孩子不行,孩子就不行,行也会不行. 这就是"暗示"的力量. 曾经看过一则短视频,印象深刻. 公园里,男孩的妈妈要求小女孩把球借给自己孩子玩 ...

  • UC头条:尿常规检查中, 尿蛋白一个“ ”, 是什么意思? 需要治疗吗?

    导语:我们在医院体检时,会发现,不管什么性质的体检,其中都会有尿常规检查,这足以说明,尿常规检查的重要性.它是医生判断我们肾功能是否健全的重要参考项目,一旦出现异常,很可能说明,是肾脏出现了问题. 当 ...

  • UC头条:风水中十大镇宅之宝 记住它们对家庭好

    很多家庭都会在家中摆放各式各样的风水摆件,用来谋求好的风水和运势,从风水学的角度来看,其实是很值得提倡的做法.在家居风水当中,有十种可以镇宅的风水宝物,是很适合摆放在家中的,具体有哪十种呢?结合相关的 ...

  • UC头条:珍藏: 中医治“绣球风”的全过程! 湿去, 痒消, 方子详细讲给你

    点击加载图片 (本文仅供学习.参考,不能替代医嘱和处方.文中所述配伍.方剂,必须在中医师当面辨证指导下来借鉴.应用,切勿盲目尝试!) 本文理论依据:<中医方剂学> 你好,我是中医人,文君然 ...

  • UC头条:诗词中最美的40句妙联佳对, 句句动人, 惊艳千年!

    UC头条:诗词中最美的40句妙联佳对, 句句动人, 惊艳千年!

  • UC头条:风水中的明堂法则

    众山止处是真穴:众水聚处是明堂.禽兽居水口,身处翰林:九曲入明堂,当朝宰相. --<雪心赋> 俗话说:"登山观水口,入穴看明堂."水口,乃水流进出之口,是穴场之前视线范 ...