python列表与列表算法详解
作者:wakeyo_J 发布时间:2022-09-20 20:36:51
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]
>>>
来源:https://blog.csdn.net/m0_55697123/article/details/119044540
猜你喜欢
- 代码#!/usr/bin/env python#coding=utf-8import random#生成[0, 1)直接随机浮点数print
- 用pycharm和pyqt5,想写一个弹出窗口的程序,如下:class video_record(QWidget): &nbs
- 运行截图运行效果:什么?你说你看不清烟花?那我换一种颜色,请点开看。实现过程准备工作使用语言和框架:python、pygame。安装pyga
- 前言前面已经讲述了如何获取股票的k线数据,今天我们来分析一下股票的资金流入情况,股票的上涨和下跌都是由资金推动的,这其中的北上资金就是一个风
- 慢SQL与索引的关系慢SQL优化原则数据库也是应用,MySQL 作为一种磁盘数据库,属于典型的 IO 密集型应用,并且随机 IO 比顺序 I
- $tar xvf go1.3.3.linux-amd64.tar.gz$mv go /usr/local/$vim /etc/profile
- assert断言声明,遇到错误则立即返回在使用python语言开发深度学习模型时,经常会遇到模型运行结束时才会发现的崩溃状态,或者得到的结果
- 本文主要给大家介绍了关于Golang中switch和select用法的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:一、swi
- 目录一、前言二、使用1.@Component2.compued、data、methods3.@props4.@watch5.@emit三 、
- 对于一般的图像提取轮廓,介绍了一个很好的方法,但是对于有噪声的图像,并不能很好地捕获到目标物体。比如对于我的鼠标,提取的轮廓效果并不好,因为
- Tkinter实现UI分页标签显示:Input页,红色部分为当前Frame的位置,下半部分为第一页的子标签;三页标签的显示内容各不相同。实现
- 先记下,免得以后想不起来又到处去找! PHP操作数据库的时候,数据库中数据使用UTF8编码,在读出来的时候,显示的全是???????问号乱码
- 前言首先声明,本工具仅仅为学习之用,不涉及版权问题,因为百度音乐里面的歌曲本身是可以下载的,而且现在百度也提供了”百度音乐播放器”,可以通过
- 为什么要同步SQL Server 2000 数据库,它都用在什么场合SQL Server 2000 数据库同步配置的原理从0开始一步一步配置
- 代码伺候:先看如下代码:例1: message = Message.objects.filter(pk=message_id2)messag
- 守护进程1、守护子进程主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止其二:守护进程内无法再开启子进程,否则抛出异常:Ass
- 前言现在Python3 被越来越多的开发者所接受,同时让人尴尬的是很多遗留的老系统依旧运行在 Python2 的环境中,因此有时你不得不同时
- 目录1、请求模块:urllib.requestdata参数:post请求urlopen()中的参数timeout:设置请求超时时间:响应类型
- 最近在学习Python的时候遇到一个知识点,在此记录下来可变参数会自动填充前面的同名默认参数比如下面这个函数def add_student(
- class Node: def __init__(self,dataval=None): self.d