Python学习笔记(六):数据类型之 List

2023-10-27


序列是 python 中最基本的数据类型。序列中的每个元素都分配一个索引,索引从 0 开始;

python 有六个序列的内置类型,最常见的是列表和元祖;

序列都可以进行的操作,包括索引、切片、加、乘、检查成员;

此外,python 已经内置确定序列的长度,以及确定最大和最小的元素的方法;


List(列表)  

  • List(列表) 是 Python 中使用最频繁的数据类型。

  • List 可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。

  • List 是写在方括号 [] 之间、用逗号分隔开的元素列表。

# 定义一个列表:列表中元素的类型可以不相同,元素之间用逗号分隔
list = ['abcd', 786 , 2.23, 'runoob', 70.2]
  • 和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

  • 列表截取的语法格式如下:索引值以 0 为开始值,-1 为从末尾的开始位置。

变量[头下标:尾下标]
  • 加号(+) 是列表连接运算符,星号 (*) 是重复操作。如下实例:
# 列表中元素的类型可以不相同
list = ['abcd', 786 , 2.23, 'runoob', 70.2]
tinylist = [123, 'runoob']

print (list)            # 输出完整列表
print (list[0])         # 输出列表第一个元素
print (list[1:3])       # 从第二个开始输出到第三个元素
print (list[2:])        # 输出从第三个元素开始的所有元素
print (tinylist * 2)    # 输出两次列表
print (list + tinylist) # 连接列表

输出结果:

  • Python 列表截取可以接收第三个参数,参数作用是截取的步长,以下实例在索引 1 到索引 4 的位置并设置为步长为 2(间隔一个位置)来截取字符串:
# 列表中元素的类型可以不相同
list = ['abcd', 786 , 2.23, 'runoob', 70.2]

# 获取列表中第 2 个元素到第 5 个元素,并且获取元素的步长为 2,即隔一个元素获取一个元素;
print(list[1:4:2])

输出结果:

  • 与 Python 字符串不一样的是,列表中的元素是可以改变的:
# 列表中元素的类型可以不相同
list = ['abcd', 786 , 2.23, 'runoob', 70.2]

# 修改列表第一个元素的值
list[0] = 123

# 修改列表第 3 到第 5 个元素的值
list[2:4] = ["hello", 3.14, True]

# 输出列表的所有值
print(list)

输出结果:

  • 可以使用 del 语句删除列表中的元素:
# 定义一个列表
list = ['how', 'are', 'you', 33]

print("原始列表 : ", list)
del list[2] # 删除列表的第三个元素
print("删除第三个元素:", list)

输出结果:

  • 可以使用 in 和 not in 判断某个对象是否在列表中;
list1 = ["how", "are", "you"]

# 使用 in 和 not in 判断某个对象是否在列表中
print("how" in list1)       # True
print("hello" in list1)     # False
print("hello" not in list1) # True

 

 

Python 中列表(List)的内置方法:

1、list.appent(obj):在列表末尾添加新的对象;该方法无返回值,但是会修改原来的列表;

list1 = ['how', 'are', 'you']
list2 = ["i", "am", "fine"]

list1.append("what?")       # 在列表的末尾添加字符串
print(list1)

list1.append(3.14)          # 在列表的末尾添加数字
print(list1)

# 在列表的末尾添加列表(新添加的列表作为原列表的一个元素,即嵌套)
list1.append(list2)
print(list1)

输出结果:

2、list.extend(seq):该函数用于在列表末尾一次性追加另一个序列中的多个值;参数 seq 可以是列表、元组、集合、字典,如果是字典,则仅会将键(key)作为元素依次添加至原列表的末尾;该方法没有返回值,但是会在原列表中添加新的元素;

list1 = ["how", "are", "you"]   # 定义一个列表
tuple1 = ("i", "am", "fine")    # 定义一个元组
set1 = {"thank", "you"}         # 定义一个集合

# 将元组中的元素添加到列表中
list1.extend(tuple1)
print(list1)

# 将集合中的元素添加到列表中;
# 由于集合中的元素是无序的,所以添加的时候,thank 元素不一定在 you 元素前面;
list1.extend(set1)
print(list1)

print("============================")

# append() 方法和 extend() 方法的区别:
# 使用 append() 方法将 list2 添加到 list1 的末尾时,list2 整体是作为 list1 的一个元素(相当于嵌套);
# 使用 extend() 方法将 list2 添加到 list1 的末尾时,是将 list2 中的所有元素追加到 list1 的末尾;
list1 = ["how", "are", "you"]
list2 = ["hello", "world", 123]

list1.append(list2)     # 使用 append() 方法将 list2 添加到 list1 的末尾
print(list1)

list1 = ["how", "are", "you"]
list1.extend(list2)     # 使用 extend() 方法将 list2 添加到 list1 的末尾
print(list1)

输出结果:

3、list.count(obj):用于统计某个元素在列表中出现的次数;

4、list.index(x[, start[, end]]):从列表中查找指定元素第一次出现的位置;如果没有找到,则抛出异常;如果参数 start 和 end 存在,则表示在列表中指定的范围内查找;

list1 = ["how", "are", "you", "i", "am", "fine", "thank", "you"]

# 查看列表中元素 you 第一次出现的位置
print(list1.index("you"))

print(list1[7])

# 从列表中,元素索引为 3-7 的范围内,查找元素 you 第一次出现的位置:结果抛出异常,
# 可见,3-7 的范围,是左闭右开的,即 [3, 7),包含索引为 3 的元素,但是不包含索引为 7 的元素;
print(list1.index("you", 3, 7))

输出结果:

5、list.insert(index, obj):用于将指定对象插入到列表的指定位置;该函数无返回值,但是会修改原列表;

list1 = ["how", "are", "you"]

# 将字符串 hello 插入到列表中索引为 2 的位置
list1.insert(2, "hello")
print(list1)

# 将数值 3.14 插入到列表中索引为 3 的位置;
# 注意:此时的列表,已经包含了上面插入的 hello;
list1.insert(3, 3.14)
print(list1)

# 将 list2 插入到 list1 中索引为 2 的位置;
# 注意:此时 list2 是作为一个元素存在,即 list1列表 中嵌套 list2列表;
list2 = ["thank", "you"]
list1.insert(2, list2)
print(list1)

 输出结果:

6、list.pop([index=-1]):用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值;

index 为可选参数,表示要移除元素的索引值,不能超过列表总长度,默认为 index = -1,即移除最后一个元素。

list1 = ["how", "are", "you"]
print(list1.pop())  # 默认移除列表最后一个元素,并返回该元素
print(list1)        # 输出修改后的元素

list1 = ["how", "are", "you"]
print(list1.pop(1)) # 移除列表中索引为 1 的元素,并返回该元素
print(list1)        # 输出修改后的元素

输出结果:

7、list.remove(obj):用于移除列表中某个元素的第一个匹配项;该方法没有返回值,但是会修改原列表;

list1 = ["how", "are", "you", "i", "am", "fine", "thank", "you"]

# 移除列表中的元素 you,如果有多个 you,只会移除第一个;
list1.remove("you") 
print(list1)

输出结果:

8、list.reverse():用于对列表中的元素进行反向排序;该方法没有返回值,但是会修改原列表;

9、list.sort( key=None, reverse=False):用于对列表中的元素进行排序;如果指定了参数,就根据参数表示的规则进行排序;

  • key:主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

    上面这句对 key 参数的解释是学习资料上写的,但是一开始完全看不懂是什么意思,于是查了一下其他资料,根据我自己的理解就是:因为排序只能使用一个具体的数值或者字符串去比较,但是如果列表中的元素不是一个具体的值,而是另一个集合或者元组等,那就不好进行比较了,比如 [(2, 2), (3, 4), (4, 1), (1, 3)] 这种列表中嵌套元组的情况,我们就没办法直接用列表的元素(元组)去进行比较;这时候就需要使用 key 这个参数了,这个参数可以是一个函数,并且这个函数有一个返回值,那么我们就可以使用这个函数的返回值去进行比较了。

  • reverse:排序规则,默认为 False,表示正向排序(升序);如果为 True,表示反向排序(即降序);

list1 = ["how", "are", "you", "i", "am", "fine", "thank", "you"]

list1.reverse();    # 对列表中的元素进行反向排序
print(list1)        # 输出排序之后的列表

list1.sort()        # 对列表中的元素进行升序排序(默认情况)
print(list1)

list1.sort(reverse=True)   # 对列表中的元素进行降序排序
print(list1)

print("********************")

# 如果列表中的元素是另一个列表,或者元组等,那么就不能直接用列表的元素进行比较了;
list1 = [(2, 2), (3, 4), (4, 1), (1, 3)]

# 定义一个方法,接收一个元组,返回元组的第二个元素
def getSecond(element):
    return element[1]

# 表示将 list1 的元素(元组)传入 getSecond 方法,然后返回元组的第二个元素,
# 然后 list1 根据元组的第二个元素进行排序;
list1.sort(key=getSecond)
print(list1)

输出结果:

10、list.clear():清空列表,类似于 del [:];该方法没有返回值,但是会修改原列表;

11、list.copy():复制列表,返回复制后的新列表;

list1 = ["how", "are", "you"]

print(list1.copy()) # 复制列表,返回复制后的新列表

list1.clear()       # 清空列表
print(list1)

输出结果:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python学习笔记(六):数据类型之 List 的相关文章

  • pycharm使用小技巧-插入代码/默认模板

    每次用pycharm写代码的时候前面几行代码都要重复写 作为一名新生代民工 对于这种重复性工作当然是能省略就省略的了 未设置前 我们新建一python文件都是空白的 如下图 而设置好之后的样子如下 新建之后便是我们想要的模板 设置步骤如下
  • datetime.time类介绍

    一 time是一个时间类 由时 分 秒 微妙组成 其构造函数如下 class datetime time hour minute second microsecond tzinfo 参数tzinfo 它表示时区信息 各参数的取值范围 hou
  • 一个人才数据网的爬虫软件

    最近表哥让我帮他写个软件 定时爬取一个人才数据网站的信息 思路和方法很简单 不过过程中遇到的坑真的不少 今天对整个软件的开发过程做个记录 网站是 余姚人才网 链接就不上了 百度第一个就是 还是老样子 python request beaut
  • numpy的numpy.delete()/insert()/append()函数

    1 numpy delete arr obj axis None arr 输入向量 obj 表明哪一个子向量应该被移除 可以为整数或一个int型的向量 axis 表明删除哪个轴的子向量 若默认 则返回一个被拉平的向量 a np array
  • Pandas学习之to_csv()

    用法 df to csv 输出路径 参数1 参数2 参数3 sep 以逗号 作为数据的分隔符 如果分隔符不为逗号 则包含符双引号 就会消失 分隔符为Tab时 写法如下 df to csv new csv sep t na rep NA 确实
  • python删除字符串左右两边的多个符号

    引号中加入删除符号的列表 删除左右大括号和空格 n strip n
  • Python之线程编程(Thread)

    线程基本概念 1 什么是线程 1 线程被称为轻量级的进程 2 线程也可以使用计算机多核资源 是多任务编程方式 3 线程是系统分配内核的最小单元 4 线程可以理解为进程的分支任务 2 线程特征 1 一个进程中可以包含多个线程 2 线程也是一个
  • Python学习之:如何根据经纬度来实现地图的可视化(将这些点在地图上标注出来)

    文章目录 最终效果展示 实操步骤 第一步 打开高德地图的控制台 gt 数据可视化 第二步 创建可视化项目 第三步 上传CSV数据 注意格式要求 一定要包含经纬度信息 第四步 创建可视化实例 最终效果展示 这些红色的点 就是我们给出的经纬度的
  • python中sorted方法排序字典时关于sortedClassCount[0][0]的注意事项

    用sorted排序字典时返回的是又元组组成的列表 operator itemgetter 1 表示按值排序 reverse True表示降序 import operator a a red 30 a yellow 15 a black 12
  • Python学习笔记之几点代码格式要求

    1 缩进 通常我们都是用Tab制表符进行代码缩进 但是标准来说是要用4个空格进行缩进 如果代码工具可以设置按Tab自动转换为4个空格 那就设置一下吧 想想之前写的代码没有用4个空格 代码规范很重要 在需要缩进的地方都使用四个空格 可提高可读
  • Python常用第三方库——简介及下载地址

    Python常用第三方库 可以在 The Python Package Index PyPI 软件库 官网主页 https pypi org 查询 下载 和 发布 Python包或库 网络爬虫 requests https pypi org
  • Numpy&Pandas 数据处理与挖掘

    笔记来源B站 https www bilibili com video BV1xt411v7z9 p 21 python学习笔记 1 Numpy 1 1 Numpy优势 1 1 1 Numpy介绍 1 1 2 ndarray介绍 1 1 3
  • Numpy基础数据结构

    Numpy基础数据结构 NumPy数组是一个多维数组对象 称为ndarray 其由两部分组成 实际的数据 描述这些数据的元数据 Numpy Python开源的科学计算工具包 高级的数据编程工具 ndarray 是强大的N维数组对象 对数据结
  • 深度学习 从零开始 —— 神经网络(四),二分类问题,IMDB数据集使用

    IMDB数据集 互联网电影数据 包含50000条严重两极分化的评论 正面和负面评论各占50 而该数据集也同样被内置于Keras库中了 其中的评论数据已经经过了预处理 评论 单词 被转化为了整数序列 每个整数都对应词典里面的一个单词 加载数据
  • 线性回归模型及K-score归一化方法Python3实现杂文

    Python3 线性回归模型及K score归一化方法实现 前言 本文是博主参考吴恩达的机器学习课程记录的杂文笔记 主要内容是线性回归的代码实现和K score归一化方法的代码实现 以及线性回归的主要公式内容 鉴于博主水平 如有错误 请帮忙
  • python之logging模块详解

    python之 logging 模块 文章目录 python之 logging 模块 一 日志关概念 日志的作用 日志的等级 3 日志字段信息与日志格式 4 日志功能的实现 二 logging 模块介绍 什么是logging模块 loggi
  • Python中的面向对象编程的一些基本概念总结

    一 一些专有词汇的定义 面对对象编程 OOP object oriented programming 是一种程序设计范型 同时也是一种程序开发的方法 实现OOP的程序希望能够在程序中包含各种独立而又相互调用的对象 没一个对象又都应该能够接受
  • Linux系统安装python3.8与卸载教程

    Linux系统安装python3 8与卸载教程 一 安装python解释器 1 获取系统版本信息 首先 查看Linux系统版本信息 root oldboy cat proc version Linux version 4 18 0 240
  • 解决Eclipse找不到或无法加载主类问题

    1 projiet clean 2 再次运行程序 就可以成功运行
  • Python3学习笔记之-第三方模块(Pillow)

    目录 前言 一 安装Pillow 二 操作图像 前言 在 pillow之前处理图形的库莫过于PIL 但是它支持到python2 7 年久失修 于是一群志愿者在PIL的基础上常见了pillow 支持python3 又丰富和功能特性 一 安装P

随机推荐

  • nlohmann-json库使用简介

    nlohmann json库使用简介 GitHub地址 nlohmann json 简介 JSON库千千万 为何nlohmann json库那么热门呢 原因在于它的设计理念非常人性化 提供符合直觉的语法 可以像STL容器一样来使用 提供了丰
  • 动态规划算法之矩阵连乘积问题1

    首先我们了解一下什么是动态规划算法 动态规划算法与分治法类似 其基本思想也是将待求问题分解成若干个子问题 但是与分治法不同的是 适合于动态规划算法的问题经分解得到的子问题不是互相独立的 假若用分治法解决此类问题 由于子问题太多 导致最后求解
  • Could not locate zlibwapi.dll. Please make sure it is in your library path!

    下载预编译版本 http www winimage com zLibDll 把 lib 和 dll 文件放到 CUDA 安装目录的 lib 和 bin 文件夹
  • Vmstat基础使用

    Vmstat https www cnblogs com ggjucheng archive 2012 01 05 2312625 html vmstat展示信息
  • 20201020关于List<Map>的过滤 和 求和 BigDecimal的注意点

    过滤出符合条件的数据 List
  • J2EE学习中一些值得研究的开源项目

    原文地址 http java csdn net a 20100127 258561 html 这篇文章写在我研究J2SE J2EE近三年后 前3年我研究了J2SE的Swing Applet Net RMI Collections IO JN
  • 官方Xcode及模拟器SDK下载

    如果你嫌在 App Store 下载 Xcode 太慢 你也可以选择从网络上下载 Xcode下载 Beta版打的包是不能提交到App Store上的 绝对官方源 绝对官方源 绝对官方源 不能确定自己的 Xcode 是否有问题 简单的一条命令
  • win10网络重置后果很严重(联想电脑)

    1 win的网络重置功能 2 重置后是这样的 啥都没有 更别说联网了 我不知道是不是只有联想才会这样 本来在网络连接有好动东西 现在啥都没有 看了好多博客 都没有解决问题 好多人都重装系统了 3 如果你是联想电脑 系统重装也没有用 以前朋友
  • 解决Docker镜像国内无法下载问题

    近期由于docker镜像仓库禁止国内下载 国内各平台均无法下载更新最新docker镜像 为解决此问题 大家可以使用dockerproxy代理下载 使用方法 大家只需打开docker proxy代理网站 在快捷命令中输入所需镜像和版本 点击
  • Django_xAdmin项目(三)之xAdmin进阶开发

    替换django xadmin自带的users模块 1 xadmin gt plugins gt auth py 加载替换系统user的方法 from django contrib auth import get user model 替换
  • 构建统一CIM数字底盘,实现基于BIM的全流程管控

    2009年 SuperMap发布了首款二三维一体化GIS软件 首次提出了二三维一体化GIS技术 随后 二三维一体化的应用系统不断涌现 二三维一体化技术逐步成为三维GIS发展和研究的主流 2017年 SuperMap在二三维一体化 GIS 技
  • 数据结构视频教程 -《[中山大学]算法与数据结构(C语言版)[胡青主讲]》

    整个视频打包下载地址 史上最全的数据结构视频教程系列分享之 中山大学 算法与数据结构 C语言版 胡青主讲 转载请保留出处和链接 更多优秀资源请访问 我是码农 本课程由中山大学胡青老师主讲 非常精彩 数据结构是计算机科学中的重要学科 也是计算
  • WebRTC之VAD算法

    我的书 购买链接 京东购买链接 淘宝购买链接 当当购买链接 VAD Voice Activity Detection 算法的作用是检测语音 在远场语音交互场景中 VAD面临着两个难题 1 可以成功检测到最低能量的语音 灵敏度 2 如何在多噪
  • BS作业 基于springboot + Thymeleaf +mybatis 实现的书城管理系统

    一 项目背景 项目描述 一个基本功能较为完整的后台管理项目 项目主要功能有 登录验证 登录功能还加入了随机验证码的验证 用户注册 注册中密码基于srping 安全框架提供的加密 自动加盐 的密码储存方式 对注册重名进行了处理 密码重置 修改
  • matlab面向对象排序,MATLAB面向对象编程——从入门到设计模式

    第1 部分面向对象编程初级篇 第1 章面向过程和面向对象程序设计 1 1 什么是面向过程的编程 1 2 什么是面向对象的编程 1 2 1 什么是对象 Object 1 2 2 什么是类 Class 1 2 3 什么是统一建模语言 UML 1
  • nvcc编译器之编译选项(chapter 4)

    目录 4 NVCC编译选项 4 1 命令选项类型和符号 4 2 命令选项描述 4 NVCC编译选项 4 1 命令选项类型和符号 每个nvcc选项都有一个长名称和一个短名称 它们之间可以相互替换 这两种选项的区别在于选项名称前面连字符 号 的
  • 基于javaweb+mysql的音乐网站音乐平台(java+Springboot+ssm+mysql+maven+jsp)

    一 项目简述 功能 用户管理模块 用户登录 用户注册 修改密码 榜单列表模块 动态地从数据库中获取歌曲的链接和数据 在榜单中显示 歌曲搜索模块 在首页的搜索框中可以输入关键字进行歌 曲的模糊搜索 歌曲收藏模块 在榜单列表中或搜索页面中可以点
  • Java和Python一些处理sql方式总结

    将查询结果导入csv文件中 public static int executeUpdate String sql Object param 创建一个PreparedStatement对象用来操作数据库 PreparedStatement p
  • TensorFlow之CNN图像分类及模型保存与调用

    本文主要通过CNN进行花卉的分类 训练结束保存模型 最后通过调用模型 输入花卉的图片通过模型来进行类别的预测 测试平台 win 10 tensorflow 1 2 数据集 http download tensorflow org examp
  • Python学习笔记(六):数据类型之 List

    序列是 python 中最基本的数据类型 序列中的每个元素都分配一个索引 索引从 0 开始 python 有六个序列的内置类型 最常见的是列表和元祖 序列都可以进行的操作 包括索引 切片 加 乘 检查成员 此外 python 已经内置确定序