python列表与列表算法详解

 更新时间:2021年08月18日 10:21:37   作者:wakeyo_J  
这篇文章主要介绍了Python的列表和列表算法,具有一定参考价值,需要的朋友可以了解下,希望能给你带来帮助

1. 序列类型定义

序列是具有先后关系的一组元素

  • 序列是一维元素向量,元素类型可以不同
  • 类似数学运算序列:S0,S1,…,S(n-1)
  • 元素间由序号引导,通过下表访问序列的特定元素

序列是一个基类类型

在这里插入图片描述

序列处理函数及方法

在这里插入图片描述

序列类型通用函数和方法

在这里插入图片描述

2. 列表的基础知识

2.1 列表定义

列表(list):是可变的序列型数据,也是一种可以存储各种数据类型的集合,用中括号([ ])表示列表的开始和结束,列表中的各元素之间使用半角逗号(,)分隔,且列表中每个元素都有一个对应的下标。

1)列表是序列类型的一种扩展,十分常用

  • 列表是一种序列类型,创建后可以随意被修改
  • 使用[ ]或list()创建,元素间用英文逗号分隔
  • 列表中各元素类型可以不同,无限长度
a = []   #空列表
a = [1,2,3,None,'bdshsvh',[1,2,3,5]]

列表中的数据可以是python支持的任意数据。

2)列表的下标

列表的下表也是从0开始表示,反向则从-1开始。

在这里插入图片描述

2.2 列表基本操作

列表支持对集合元素进行增加、查找、修改、删除、合并操作等。

在这里插入图片描述

1)列表元素的增加

append()方法:存在元素的列表尾部新增元素。

>>> fruits = ['apple',5,'peach',2,'watermelon',12]    #原有列表
>>> fruits.append('pear')   #用append()方法增加新元素
>>> fruits.append(15)
>>> print(fruits)
['apple', 5, 'peach', 2, 'watermelon', 12, 'pear', 15]

insert()方法:可以在列表的任意指定位置增加元素。insert()方法的第一个参数为需要插入元素的列表的下表,第二个参数为指定的新增元素值。

>>> fruits.insert(0,'starfruit')
>>> fruits.insert(1,14.2)
>>> print(fruits)
['starfruit', 14.2, 'apple', 5, 'peach', 2, 'watermelon', 12, 'pear', 15]

2)列表元素查找

index()方法:语法格式L.index(value,[start[,stop]]),其中L为列表对象,value代表需要在列表中查找的元素,start代表在列表中查找元素时开始查找的下标数,stop代表查找结束时的下标数,start和stop参数可选。若查找到元素,则返回第一个找到的元素,若没有找到,则返回“ValueError…”错误信息。

>>> fruits.index("pear")
8
>>> fruits.index(1)
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    fruits.index(1)
ValueError: 1 is not in list
>>> fruits.index(2,5,12)
5

in成员运算符判断

>>> 'a' in fruits
False

用in判断的好处是不会产生报错信息。

用下标读取对应的元素

>>> fruits[5]
2
>>> fruits[8]
'pear'

切片读取

>>> fruits[5:]
[2, 'watermelon', 12, 'pear', 15]

3)列表元素修改

列表通过指定下标,对对应的元素进行赋值修改。

>>> ls = ['Tom',1,5,8]
>>> ls[2] = 8
>>> ls
['Tom', 1, 8, 8]
>>> ls[3] = '元'
>>> ls
['Tom', 1, 8, '元']

4)列表元素修改

clear()方法:清楚列表中的所有元素。

>>> fruits.clear()
>>> fruits
[]
>>> len(fruits)
0

pop()方法:语法格式L.pop([index]),L代表列表,index为可选参数,当指定index参数时,删除对应下标位置处的元素(如果指定的参数值不在列表下标数中,会报错)。pop()默认删除列表尾部的第一个元素。

>>> listpop = ['球1','球2','球3']
>>> get_one = listpop.pop()
>>> print(get_one,'',listpop)
球3  ['球1', '球2']
>>> listpop.pop(2)
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    listpop.pop(2)
IndexError: pop index out of range

remove()方法:L.remove(value),L代表列表,value代表要删除的元素,如果要删除的元素有多个时,只会删除左边的第一个。

>>> listpop = ['球1','球2','球3','球2']
>>> listpop.remove('球2')
>>> listpop
['球1', '球3', '球2']
>>> 

del函数:可以删除指定的元素,也可以删除整个列表。

>>> del(listpop[2])
>>> listpop
['球1', '球3']
>>> del(listpop)
>>> listpop
Traceback (most recent call last):
  File "<pyshell#36>", line 1, in <module>
    listpop
NameError: name 'listpop' is not defined
>>> 

5)列表元素合并

对于两个列表对象的合并,可以通过extend()方法

>>> team1 = ["张三","李四","王五"]
>>> team2 = ["Tom","John"]
>>> team1.extend(team2)
>>> team1
['张三', '李四', '王五', 'Tom', 'John']
>>> 

采用“+”也可以实现两个列表对象的合并,但是会改变team1的内存地址,表示team1合并后被重新定义了,不再是最初的team1.

>>> team1 = ["张三","李四","王五"]
>>> team2 = ["Tom","John"]
>>> id(team1)
2172213272840
>>> team1.extend(team2)
>>> id(team1)
2172213272840
>>> team1 = team1 + team2
>>> team1
['张三', '李四', '王五', 'Tom', 'John']
>>> id(team1)
2172213337736

6)列表元素排序

sort()方法:L.sort(key=None,reverse=False),L表示列表,key为可选参数,用于指定在作比较之前调用何种函数对元素进行处理,如key = str.lower(将大写字母转换为小写字母函数),reverse为可选参数,默认情况下为增序(一般根据ASCII码从小到大对字符、数字进行排序)排序。

>>> fruits = ['banana','pear','apple','peach']
>>> fruit_1 = fruits.copy()
>>> fruit_1.sort()
>>> fruit_1
['apple', 'banana', 'peach', 'pear']
>>> fruit_h = fruits.copy()
>>> fruit_h.sort(reverse=True)
>>> fruit_h
['pear', 'peach', 'banana', 'apple']
>>> 
fruits = ['banana','pear','Apple','peach']
>>> fruit_s = fruits.copy()
>>> fruit_s
['Apple', 'banana', 'peach', 'pear']

7)列表其他操作方法

copy()方法:对列表进行拷贝。

>>> fruit_s = fruits.copy()
>>> fruit_s
['banana', 'pear', 'Apple', 'peach']
>>> id(fruits)
2172213342792
>>> id(fruit_s)
2172213273608

count()方法:对列表指定元素个数进行统计。

>>> vegetable = ['白菜','青菜','萝卜','芹菜','菠菜','白菜','花菜']
>>> vegetable.count('白菜')
2

reverse()方法:对列表对象永久性反向记录。

>>> vegetable = ['白菜','青菜','萝卜','芹菜','菠菜','白菜','花菜']
>>> vegetable.reverse()
>>> vegetable
['花菜', '白菜', '菠菜', '芹菜', '萝卜', '青菜', '白菜']
>>> 

列表解析

语法:

[expression for iter_val in iterable]
[expression for iter_val in iterable if cond_expr]

说明:expression为基于元素的运算表达式,如i**2,对每一个元素求平方,iter_val为从列表iterable迭代获取的元素i,if子句判断元素,cond_expr为判断元素表达式。

>>> nums = [i**2 for i in range(11) if i>0]
>>> nums
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>> 

相当于:

>>> nums =[]
>>> for i in range(1,11):
	nums.append(i**2)
>>> nums
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>> 

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • PyQt5实现下载进度条效果

    PyQt5实现下载进度条效果

    这篇文章主要为大家详细介绍了PyQt5实现下载进度条效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • python 实现数据库中数据添加、查询与更新的示例代码

    python 实现数据库中数据添加、查询与更新的示例代码

    这篇文章主要介绍了python 实现数据库中数据添加、查询与更新的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • Flask实现图片的上传、下载及展示示例代码

    Flask实现图片的上传、下载及展示示例代码

    这篇文章主要介绍了Flask实现图片的上传、下载及展示示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Python super( )函数用法总结

    Python super( )函数用法总结

    今天给大家带来的知识是关于Python的相关知识,文章围绕着super( )函数展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Python实现生成日报的示例代码

    Python实现生成日报的示例代码

    这篇文章主要为大家详细介绍了如何利用Python实现生成日报的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-06-06
  • 用Python的Django框架编写从Google Adsense中获得报表的应用

    用Python的Django框架编写从Google Adsense中获得报表的应用

    这篇文章主要介绍了用Python的Django框架编写从Google Adsense中获得报表的应用,主要利用了官方的Google Adsense API,需要的朋友可以参考下
    2015-04-04
  • python实现停车管理系统

    python实现停车管理系统

    这篇文章主要为大家详细介绍了python实现停车管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Python Flask自定义URL路由参数过滤器的方法详解

    Python Flask自定义URL路由参数过滤器的方法详解

    Flask是一个轻量级的Python Web应用框架,它允许开发者以一种简洁明了的方式来构建Web应用,Flask自定义URL的主要功能在于使得开发者能够通过简单的路由规则来自定义应用程序的URL结构,本文给大家介绍了Python Flask自定义URL路由参数过滤器的方法,需要的朋友可以参考下
    2024-07-07
  • python-opencv获取二值图像轮廓及中心点坐标的代码

    python-opencv获取二值图像轮廓及中心点坐标的代码

    今天小编就为大家分享一篇python-opencv获取二值图像轮廓及中心点坐标的代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python安装cx_Oracle和wxPython的方法

    python安装cx_Oracle和wxPython的方法

    这篇文章主要介绍了python安装cx_Oracle和wxPython的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09

最新评论