Python列表list的详细用法介绍
作者:爪哇斗罗 发布时间:2021-04-17 06:56:15
一. 创建列表
列表(list)作为Python中基本的数据结构,是存储数据的容器,相当于其它语言中所说的数组。
模拟出的结构如下:
创建列表有两种方式:
1.1 第一种
使用“[ ]”进行创建,内部元素可以是任意数据类型:
list1=["Hello","world",True,0.01,12]
1.2 第二种
使用Python中内置函数list()
list2=list(["Hello","world",True,0.01,12])
列表的特点总结:
列表元素是按照有序顺序进行排序的每个索引对应一个数据列表数据可以重复存储内部元素可以是任意数据类型根据内部元素多少动态分配内存空间
二. 查询列表
2.1 获取列表元素索引
使用index()函数获取元素索引,若列表中有重复元素,只获取第一个位置的索引,元素不存在会抛出错误。
list1 = ["Hello","Hello",True,0.01,12]
# 索引为 0
print(list1.index("Hello"))
# 索引为 4
print(list1.index(12))
# 索引不存在 ValueError: 100 is not in list
print(list1.index(100))
给index()函数设置参数,可以在指定的范围内查找元素的索引位置
list1 = ["Hello", "Hello", True, 0.01, 12]
# 从索引1开始到索引4结束,不包括索引4,查找元素True的索引为2
print(list1.index(True, 1, 4))
2.2 获取列表单个元素
对于一个列表,索引从前往后下标是从0~N-1,从后往前是-N~-1,N表示元素个数。
list1 = ["Hello", "Hello", True, 0.01, 12]
# 获取索引为2的元素 True
print(list1[2])
# 获取索引为-1的元素 12
print(list1[-1])
# IndexError: list index out of range
print(list1[5])
2.3 获取列表多个元素
使用索引只能获取一个元素,想要获取列表中多个元素使用切片。
公式:列表名[start : stop :step],意思是从哪里开始到哪里结束,可以定义步长(默认步长为1,step不能为0)。
对于切片的结果就是对原列表的拷贝生成一个新的列表对象。
切片的用法如下:
list1 = ["Hello", "Hello", True, 0.01, 12, 32, 34]
# 取索引1~6,默认步长为1:['Hello', True, 0.01, 12, 32]
print(list1[1:6:])
# 取索引1~6,['Hello', True, 0.01, 12, 32]
print(list1[1:6:1])
# 取索引1~6,步长为2:['Hello', 0.01, 32]
print(list1[1:6:2])
# start不写,默认从0开始:['Hello', True, 12]
print(list1[:6:2])
# ['Hello', True, 12]
print(list1[0:6:2])
# stop不写,
print(list1[0::2])
# step为负数 -1 [34, 32, 12, 0.01, True, 'Hello', 'Hello']
print(list1[::-1])
# [34, 12, True, 'Hello']
print(list1[::-2])
# [32, 12, 0.01, True, 'Hello', 'Hello']
print(list1[5::-1])
# [32, 12, 0.01, True]
print(list1[5:1:-1])
注意:若step为负数则是从后往前开始截取切片。
2.3 判断元素是否存在于列表
使用in或者not in,输出的是布尔类型的值。
list1 = ["Hello", "Hello", True, 0.01, 12, 32, 34]
# True
print("Hello" in list1)
# False
print("Hello" not in list1)
# False
print(True not in list1)
# True
print(12 in list1)
遍历列表元素:
list1 = ["Hello", "Hello", True, 0.01, 12, 32, 34]
for i in list1:
print(i)
三. 列表添加操作
list1=[10,20,30,40,50,60]
# 在列表末尾添加一个元素
list1.append(34)
# [10, 20, 30, 40, 50, 60, 34]
print(list1)
# 在列表末尾添加多个元素
list1.extend([21,12,34])
# [10, 20, 30, 40, 50, 60, 34, 21, 12, 34]
print(list1)
# 在列表任意位置添加一个元素
list1.insert(0,1)
# [1, 10, 20, 30, 40, 50, 60, 34, 21, 12, 34]
print(list1)
# 在列表任意位置添加多个元素,会删除切片的元素,然后添加新元素
list2=["hello",3,40]
list1[5:8:]=list2
# [1, 10, 20, 30, 40, 'hello', 3, 40, 21, 12, 34]
print(list1)
四. 列表删除操作
list1 = [10, 20, 30, 40, 50, 60, 70]
list1.remove(20)
# [10, 30, 40, 50, 60, 70]
print(list1)
# 删除索引为1的元素,不指定删除最后一个元素
list1.pop(1)
# [10, 40, 50, 60, 70]
print(list1)
# 切片删除
list1[1:3] = []
# [10, 60, 70]
print(list1)
五. 修改列表元素
为指定的索引修改元素值,也可以使用切片的方式修改。
list1 = [10, 20, 30, 40, 50, 60, 70]
list1[3]="Hello"
# [10, 20, 30, 'Hello', 50, 60, 70]
print(list1)
# 切片方式
list1[3:6]=[1,1,1,1]
# [10, 20, 30, 1, 1, 1, 1, 70]
print(list1)
六. 列表排序操作
有常见的两种方式可以对列表中的元素进行排序,使用sort(),或者sorted()的方式进行排序。
两者区别就是前者排序后不会生成新的列表对象,而后者会生成一个新的列表对象。
list1 = [10, 30, 20, 40, 80, 60]
# 原来list1: 1738929360704
print("原来list1:", id(list1))
# [10, 20, 30, 40, 60, 80] 默认升序
list1.sort()
print(list1)
# 后来list1: 1738929360704
print("后来list1:", id(list1))
# 指定reverse=True为降序
list1.sort(reverse=True)
# [80, 60, 40, 30, 20, 10]
print(list1)
###################################
list2 = [10, 30, 67, 100, 80, 32]
# 原来list2: 2357934175872
print("原来list2: ", id(list2))
list2 = sorted(list2)
# # [10, 30, 32, 67, 80, 100]
print(list2)
# 后来list2: 2357931224384
print("后来list2: ", id(list2))
# 降序
list2 = sorted(list2, reverse=True)
# [100, 80, 67, 32, 30, 10]
print(list2)
此外,还可以使用循环生成列表,称为列表生成式。
主要结构:
[ i*i for i in range(a,b) ]
通过一个for循环生成列表,i*i指的是计算公式。
代码操作:
# 生成1-9的列表式子,并通过i+i计算
list1 = [i + i for i in range(1, 10)]
# [2, 4, 6, 8, 10, 12, 14, 16, 18]
print(list1)
来源:https://blog.csdn.net/qq_41857955/article/details/125700273


猜你喜欢
- 使用python生成随机图片验证码,需要使用pillow模块1.安装pillow模块pip install pillow2.pillow模块
- 今天遇到一个问题,原有生产系统正在健康运行,现需要监控一张数据表,当增加数据的时候,给管理员发送邮件。领到这个需求后,有同事提供方案:写触发
- 取余函数 PHP取余函数 PHP两个取余 MOD(x,y) x%yMOD例如:9/3,9是被除数,3为除数.mod函数是一个求余函数,其格式
- 并行查询其优势就是可以通过多个线程来处理查询作业,从而提高查询的效率。SQL Server数据库为具有多个CPU的数据库服务器提供并行查询的
- 伴随着自然语言技术和机器学习技术的发展,越来越多的有意思的自然语言小项目呈现在大家的眼前,聊天机器人就是其中最典型的应用,今天小编就带领大家
- 机器A: select instance_name from v$instance; select name from v$database
- 一、命名空间和作用域当出现了函数,变量声明的位置就发生了变化,不同位置声明的变量,能访问这个变量的范围也出现了限制1.1 定义**命名空间:
- 背 景:在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度, 那么所有节点为根的树的深度均不会超过树的最大深度,则我们
- 在我们修改过页面的某些数据后,通过想要把页面刷新一下,看看修改后的结果。由于vue的存在,页面是不会自动刷新的,需要我们手动进行操作。在vu
- 本文实例讲述了mysql设置指定ip远程访问连接的方法,分享给大家供大家参考。具体实现方法如下:1. 授权用户root使用密码jb51从任意
- 以下排序算法最终结果都默认为升序排列,实现简单,没有考虑特殊情况,实现仅表达了算法的基本思想。冒泡排序内层循环中相邻的元素被依次比较,内层循
- 引言在已有的网站中,几乎所有的网站都已经实现了 自动登录所谓自动登录,其实就是在你登录后,然后关闭浏览器,接着再启动浏览器重新进入刚刚的网站
- 虽然Python被说成是一种解释型语言,但是实际上,Python源程序要先经过编译,然后才能运行。与Java语言类似,Python源程序编译
- 最近在使用NFineBase框架+c#做一个系统的时候,在使用sql server 2012 连接数据库的时候 ,遇到几个问题。一.就是在本
- 一、前言在Python提供了re模块,用于实现正则表达式的操作。在实现时,可以使用re模块提供的方法(如,search()、match()、
- FTP服务的主动模式和被动模式在开始之前,先聊一下FTP的主动模式和被动模式,两者的区别 , 用两张图来表示可能会更加清晰一些:主动模式:主
- 一、相关知识点1.1、SeleniumSelenium是一个强大的开源Web功能测试工具系列,可进行读入测试套件、执行测试和记录测试结果,模
- 看到这个先思考,自己怎么输出他?为什么它有颜色?特殊符号去哪找?特殊符号在符号大全找 符号大全http://www.fhdq.net/任务1
- 防止客户机的请求互相干扰或者服务器与维护程序相互干扰的方法主要有多种。如果你关闭数据库,就可以保证服务器和myisamchk和isamchk
- 1. 准备工作后台服务接口,对书本的增删改查操作2. 弹出窗口进入ElementUi官网, 找到Dialog对话框,可以参考&ldq