【python全栈系列】day05-python数据类型-List

1、概述

  • Python中的列表是一种有序的集合,用于存储一系列的数据项,这些数据项可以是数字、文本、对象,甚至其他列表
  • 有序
  • 可变(同一个内存地址中的数据变化)

2、列表的操作

2.1、创建

#1.创建列表
list1 = [] #空列表
#2.带元素的列表
list2 = ["五菱宏光","哈弗H6","大狗","欧拉",True]
#3.列表中的元素可以是不同的数据类型
list3 = [12,3.13,True,False,"hello","米西米西"]
#注意: 将数据保存到列表的时候,不用考虑列表的大小,如果数据很大的话,底层会进行自动扩容.

2.2、获取、访问

list2 = ['劳斯莱斯','迈巴赫','兰博基尼','G63','MODEL-Y','秦',123,True,9.54]
print(list2[0])  # 劳斯莱斯     0 表示第一个元素
print(list2[-1]) # 9.54       -1 表示最后一个元素
# len() 表示获取元素的个数
print(len(list2))   # 9
print(list2[2])   # 兰博基尼
print(list2[-4])  # 秦

2.3、修改元素

语法: 列表名[索引] = 值

list2 = ['劳斯莱斯','迈巴赫','兰博基尼','G63','MODEL-Y','秦',123,True,9.54]
print(list2)  # ['劳斯莱斯', '迈巴赫', '兰博基尼', 'G63', 'MODEL-Y', '秦', 123, True, 9.54]
list2[3] = '奔驰G63'
print(list2)# ['劳斯莱斯', '迈巴赫', '兰博基尼', '奔驰G63', 'MODEL-Y', '秦', 123, True, 9.54]

2.4、遍历元素

list2 = ['劳斯莱斯','迈巴赫','兰博基尼','G63','MODEL-Y','秦',123,True,9.54]
# 第一种方式:
# 遍历列表
# 第一种方式:
for i in list2:print(i)#得到的是每一项# 第二种方式:
#len(list2)代表列表的长度
for i in range(len(list2)):#i得到的是每一项的序号print(list2[i])# 第三种方式: enumerate() 同时遍历索引和元素
for k,v in enumerate(list2):  # k表示索引  v表示值print(k,v)

2.5、列表元素的合并

list1 = [2,345,7,63,57]
list2 = ['荔枝','龙岩','火龙果','芒果','橙子']
print(list1,list2)
# 通过  +  实现列表的合并
list3 = list1 + list2
print(list3)  # [2, 345, 7, 63, 57, '荔枝', '龙岩', '火龙果', '芒果', '橙子']

2.6、列表元素重复拼接

# 通过  *  号实现
list1 = [1,2,3]
list2 = list1 * 4
print(list2) #[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]

2.7、判断元素是否在列表中

# 使用成员运算符  in和 not in
list1 = ['apple','banana','boy',12,True]
print('boy' in list1)   # True
print('girl' in list1)  # False
print('boy' not in list1) # False

2.8、列表的切片

上一节我们讲过字符串的切片,结合上一节的知识,一起来看列表的切片

  • 语法: 列表名[开始下标:结束下标]
  • 特点: 包含开始下标对应的元素 不包含结束下标对应的元素
list1 = [12,34,6,8,855,683,57]
# 语法: 列表名[开始下标:结束下标] 包含开始下标对应的元素   不包含结束下标对应的元素
print(list1[1:5])  # [34, 6, 8, 855]
print(list1[:4])   # [12, 34, 6, 8]    在切片时,若未写开始下标,默认从第一个元素开始截取
print(list1[1:])   # [34, 6, 8, 855, 683, 57]   在切片时,若未写结束下标,从开始下表的位置一直截取到最后
print(list1[:])    # [12, 34, 6, 8, 855, 683, 57]
print(list1[-2:])  # [683, 57]
print(list1[::-1])  # [57, 683, 855, 8, 6, 34, 12]    # 翻转列表

3、列表的功能

3.1、append() 向尾部追加元素

# 1.1 append() 向尾部追加元素
list1 = ['番茄','西红柿','柿子','黄瓜']
# 追加单个元素
list1.append('苹果')
# 追加多个元素,不能直接追加,必须是以列表的方式进行追加.会改变原列表的维度
list1.append(['黎','芒果']) 
print(list1)#['番茄', '西红柿', '柿子', '黄瓜', '苹果', ['黎', '芒果']]

3.2、extend()用于在列表末尾一次性追加多个元素

list1 = ['番茄', '西红柿', '柿子', '黄瓜', '苹果', ['黎', '芒果']]
list1.extend('追加的数据')
print(list1)# ['番茄', '西红柿', '柿子', '黄瓜', '苹果', ['黎', '芒果'], '追', '加', '的', '数', '据']

3.3、insert(要插入位置的下标,要插入的元素)

在列表中指定的位置插入元素,后面的元素依次后延

list2 = ['秦始皇','汉武帝','隋文帝','唐太宗','宋太祖']
list2.insert(1,'秦二世')
print(list2)  # ['秦始皇', '秦二世', '汉武帝', '隋文帝', '唐太宗', '宋太祖']# 若想一次性插入多个元素,使用列表的方式实现
list2.insert(2,['刘病已','刘秀'])
print(list2)  # ['秦始皇', '秦二世', ['刘病已', '刘秀'], '汉武帝', '隋文帝', '唐太宗', '宋太祖']

3.4、删除元素

# pop() 传输的参数是下标,若未传参数,表示默认删除最后一个元素
list1 = ['刘备','关羽','张飞','赵云','马超']
print(list1)  # ['刘备', '关羽', '张飞', '赵云', '马超']
list1.pop()   # 表示删除最后一个元素
print(list1)  # ['刘备', '关羽', '张飞', '赵云']
list1.pop(1)  # 表示删除下标为1的元素
print(list1)  # ['刘备', '张飞', '赵云']
# remove() 传输的参数是要删除的元素
list2 = ['曹操','司马懿','曹丕','夏侯惇','许褚']
print(list2)   # ['曹操', '司马懿', '曹丕', '夏侯惇', '许褚']
list2.remove('曹丕')
print(list2)   # ['曹操', '司马懿', '夏侯惇', '许褚']
# clear() 表示清空列表
list3 = ['孙权','周瑜','黄盖','鲁肃','陆逊']
print(list3)  # ['孙权', '周瑜', '黄盖', '鲁肃', '陆逊']
list3.clear()
print(list3)  # []

3.5、获取元素

list1 = [34,57,43,68,2548,437]
# 获取元素的最大值 max()
print(max(list1))  # 2548
# 获取元素的最小值  min()
print(min(list1))  # 34
# 获取指定元素的索引 index()
print(list1.index(68))   # 3

3.6、reverse()翻转列表元素,在原列表的内部进行翻转,不会生成新列表

list1 = [12,34,56,78,91]
#下面是两种反转的方式
#1、list1[::-1]
print(list1[::-1])#[91, 78, 56, 34, 12]
#2、reverse
list1.reverse()
print(list1)  #  [91, 78, 56, 34, 12]

3.7、排序

list2 = [52,34,26,48,91]
# sort() 排序  默认是升序  不会生成新列表
# 升序
list2.sort()
print(list2)  # [26, 34, 48, 52, 91]
# 降序.  reverse=True
list2.sort(reverse=True)
print(list2)  # [91, 52, 48, 34, 26]# sorted() 也可以实现对列表元素进行排序. 排序的结果会生成一个新列表  默认是升序
list3 = [34,54,12,3,57]
# 升序
list4 = sorted(list3)
print(list4)  # [3, 12, 34, 54, 57]# 降序  reverse=True
list5 = sorted(list3,reverse=True)
print(list5)  # [57, 54, 34, 12, 3]#
list1 = ['a','hello','boy','girl']
# 按照元素的长度进行排序
list2 = sorted(list1,key=len)
print(list2)  # ['a', 'boy', 'girl', 'hello']

4、多维列表

4.1、一维列表

list1 = [12,3,56,68,46]
print(list1)  # [12, 3, 56, 68, 46]

4.2、 二维列表

list2 = ['白酒','啤酒','红酒',['白兰地','人头马','威士忌','伏特加']]
print(list2)  # ['白酒', '啤酒', '红酒', ['白兰地', '人头马', '威士忌', '伏特加']]
#获取数据的时候,列表[3]得到数组['白兰地','人头马','威士忌','伏特加'],再获取[1]得到人头马
print(list2[3][1])  # 人头马

4.3、 三维列表

list3 = ['白酒','啤酒','红酒',['白兰地','人头马','威士忌','伏特加',['百威','乌苏','大绿棒子']]]
print(list3[3][4][1])  # 乌苏

目前列举的数据最多到三维,现实中可以遇到多维数组,本质是一样的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/35739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux系统中vim ls grep等命令无法使用

linux突然vim ls grep等命令无法使用 系统配置路径被修改导致无法使用: echo $PATH 查看配置路径 添加路径 执行以下命令 export PATH$PATH:/root/bin export PATH$PATH:/usr/sbin

Spring MVC数据绑定和响应——复杂数据绑定(二)集合绑定

一、集合绑定的使用 集合中存储简单类型数据时,数据的绑定规则和数组的绑定规则相似,需要请求参数名称与处理器的形参名称保持一致。不同的是,使用集合绑定时,处理器的形参名称需要使用RequestParam注解标注。 接下来使用集合数…

OpenCV使用forEach的方式来遍历像素值

opencv 4.x新增了forEach的方式遍历像素值&#xff0c;比传统方式略快一些。因为它本身是使用多线程并行的方法来遍历的。从opencv源码能看到这句话&#xff1a; parallel_for_(cv::Range(0, LINES), PixelOperationWrapper(reinterpret_cast<Mat_<_Tp>*>(this), …

模块化沙箱的优势与应用

在数字化时代&#xff0c;数据安全已成为企业乃至国家层面不可忽视的重要议题。随着云计算、大数据等技术的广泛应用&#xff0c;数据泄露、恶意攻击等安全威胁日益严峻。在这样的背景下&#xff0c;模块化沙箱技术应运而生&#xff0c;为企业提供了高效、灵活的数据安全解决方…

【LeetCode】每日一题:二叉树的锯齿形层序遍历

给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09;。 解题思路 python列表可以很简单用reverse&#xff0c;remove的方法…

3d模型材质吸不了什么原因?怎么解决?---模大狮模型网

3D模型无法吸取材质可能有以下原因&#xff1a; 文件格式不支持&#xff1a;某些文件格式(如STL)不支持嵌入材质信息&#xff0c;因此在导入此类文件后&#xff0c;需要手动为模型添加材质。 材质链接错误&#xff1a;如果模型文件中嵌入了材质信息&#xff0c;但是链接错误&a…

【LeetCode面试经典150题】112. 路经总和

一、题目 112. 路径总和 - 力扣&#xff08;LeetCode&#xff09;给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &…

2024主持人资格考试报名6月24日开始

2024全国广播电视播音员主持人资格考试报名工作开始。 报名时间&#xff1a;6.24-7.5日 考试时间&#xff1a;9.7-8日 今年笔试有很大变化&#xff1a;客观题改为机测&#xff0c;主观题答题卡笔测。 报名网址&#xff1a;国家广播电视总局官网 #播音员主持人资格证 #备考播音员…

高效利用iCloud指南:打造无缝连接的数字生活

iCloud是苹果公司推出的一项云存储和云计算服务&#xff0c;它为用户提供了一个安全、便捷的云端存储空间&#xff0c;帮助用户在各个苹果设备之间无缝同步数据。无论是照片、文档、备忘录&#xff0c;还是应用程序数据&#xff0c;iCloud都能让你的数字生活更加高效和有序。本…

Linux基础 - 使用 vsftpd 服务传输文件

零. 简介 文件传输协议&#xff08;File Transfer Protocol&#xff0c;FTP&#xff09;是用于在网络上进行文件传输的标准网络协议。 FTP 允许客户端和服务器之间进行文件的上传、下载、删除、重命名等操作。它基于客户端 - 服务器模型工作&#xff0c;通常使用 TCP 协议进行…

Gradio官方教程一:Gradio生态系统、主要组件及Interface class简介

文章目录 一、快速开始1.1 创建第一个demo1.2 分享demo1.3 Interface Class1.4 Core Gradio Classes1.5 Gradio生态系统 二、Gradio的主要特点2.1 组件&#xff08;Components&#xff09;2.1.1 组件属性2.1.2 静态与交互式组件2.1.3 预处理和后处理 2.2 并发&#xff08;Queui…

基于强化学习的目标跟踪论文合集

文章目录 2020UAV Maneuvering Target Tracking in Uncertain Environments Based on Deep Reinforcement Learning and Meta-LearningUAV Target Tracking in Urban Environments Using Deep Reinforcement Learning 2021Research on Vehicle Dispatch Problem Based on Kuhn-…

java中的Collections工具类

Collections类是java中提供的一个工具类&#xff0c;它和接口Collection乍一看非常相像&#xff0c;但是二者的区别是非常大的&#xff0c;最明显的就是它们一个是类&#xff0c;而另一个是接口了。Collections工具类的作用是对Set 、Map、 List这些容器提供辅助方法来对容器中…

编写一个基于其他系的linux系统并且把它打包为一个iso镜像思想

目录 前面写的一篇文章 前言 isolinux引导模式启动流程 为什么要initramdisk操作而不直接加载文件系统 编写系统的思想 可能问题 一般的iso镜像目前只支持最大4G的大小&#xff0c;需要怎么解决&#xff1f; 如何去找驱动 木木em哈哈想说的话&#xff08;与本博文无光&…

尊重·理解·协同:论团队合作中的认知提升与信誉建设

零、背景 为什么写博客&#xff1f; 给自己灌输大道理—唠叨哲学 定期总结&#xff1a;反思这段时间内的生活、学习或工作中的得失&#xff0c;提炼出具有普适性的经验和教训。 紧跟热点新闻来有点流量 独特视角&#xff1a;尽量优先进行——人云亦云&#xff0c;先学某一…

ORC与Parquet列式存储的区别

ORC与Parquet列式存储 1、ORC与Parquet列式存储2、ORC与Parquet的区别 列式存储&#xff08;Columnar Storage&#xff09;是一种优化的数据存储方式&#xff0c;与传统的行式存储&#xff08;Row Storage&#xff09;相比&#xff0c;列式存储在数据压缩、查询性能、I/O效率等…

开源 150 T 数据(2023年之前所有数据)

开源 150 T 数据&#xff08;2023年之前所有数据&#xff09; 开源 150 T 数据生成大规模、高质量训练数据集 生成巨量数据 数据清洗和过滤 混合数据源 多级别训练和模型评估 探索新的训练策略多级别训练和模型评估探索新的训练策略 万卡 H100 集群训练 开源 150 T 数据 …

二进制方式部署k8s集群

前置知识点 1、生产环境部署K8s集群的两种方式 • kubeadm Kubeadm是一个K8s部署工具&#xff0c;提供kubeadm init和kubeadm join&#xff0c;用于快速部署Kubernetes集群。 • 二进制包 从github下载发行版的二进制包&#xff0c;手动部署每个组件&#xff0c;组成Kub…

【perl】脚本编程的一些坑案例

引言 记录自己跳进的【perl】编程小坑&#xff0c;以己为鉴。 1、eq $str1 "12345\n"; $str2 "12345"; if ($str1 eq $str2) { print "OK" } 上述代码不会打印 OK。特别在读文件 &#xff0c;匹配字符串时容易出BUG。 案例说明&#xff1a; 有…

python3.12.4 常用四个数据类型的各个函数详解

在完成目标前&#xff0c;我们最好审视自己到底有什么&#xff0c;有多远。 零、介绍 我打算详细了解一下常用的几种数据类型的各个接口&#xff0c;主要的来源是python shell中的 help(…)命令。python中基本的数据类型有四个 list, tuple, dict, set, 宽泛的讲&#xff0c;肯…