跟着我学Python基础篇:06.列表

往期文章

跟着我学Python基础篇:01.初露端倪
跟着我学Python基础篇:02.数字与字符串编程
跟着我学Python基础篇:03.选择结构
跟着我学Python基础篇:04.循环
跟着我学Python基础篇:05.函数


目录

  • 往期文章
  • 1. 列表的基本属性
    • 1.1 创建列表
    • 1.2 访问元素列表
    • 1.3 遍历列表
    • 1.4 列表引用
    • 1.5 反向下标
  • 2. 列表操作
    • 2.1 追加元素
    • 2.2 插入元素
    • 2.3 查找元素
    • 2.4 删除元素
    • 2.5 连接与重复
    • 2.6 相等性测试
    • 2.7 求和,最大值,最小值和排序
    • 2.8 复制列表
    • 2.8 切片
    • 2.8 元组

1. 列表的基本属性

列表是一个存储按线性或顺序组织的元素集合的容器。列表在增加元素时可以自动增长为任意需要的大小。

1.1 创建列表

values=[32,54,67,5,29,35,80,115,44.5,100,65]

方括号我们表示正在创建列表,元素是按照给出顺序存储的。

1.2 访问元素列表

列表是一系列元素,每个元素都有一个整数位置或者索引,为了访问列表中的一个元素,你需要指定想使用哪个索引,这个任务使用下标运算符“[]”,如同访问字符串中单个字符一样。

values=[32,54,67,5,29,35,80,115,44.5,100,65]
print(values[5])

在这里插入图片描述

列表和字符串有两个不同之处,列表可以包含任意值,而字符串是字符序列,另外字符串是不可变的,你不能修改字符串中的字符,但是列表是可便的,可以把列表中的元素替换为另一个。

注意,列表中的索引是从0开始的。

1.3 遍历列表

有两种可以访问列表中的所有元素,你可以对所有索引值进行循环并查询每个元素,或者可以对所有元素进行循环。

values=[32,54,67,5,29,35,80,115,44.5,100,65]
for i in range(11):
    print(values[i],end=" ")
print()
for element in values:
    print(element,end=" ")


在这里插入图片描述

1.4 列表引用

当把一个列表变量复制给另一个变量时,两个变量引用同一个列表。第二个变量是第一个变量的别名。

values=[32,54,67,5,29,35,80,115,44.5,100,65]
for i in range(11):
    print(values[i],end=" ")
print()
scores=values
for element in scores:
    print(element,end=" ")

在这里插入图片描述

1.5 反向下标

和很多语言不同,Python还允许在访问列表元素时使用负数下标,负数下标提供了按相反顺序访问列表元素的方法,例如,下标-1可以访问列表中的最后一个元素。

在这里插入图片描述

2. 列表操作

2.1 追加元素

有些时候,我们创建了一个列表,但是我们并不知道该用列表来做些什么,在这种情况下,我们可以创建空列表,然后根据需要来追加元素。

#创建一个空列表
friends=[]
#追加元素
friends.append("Tom")
friends.append("Jerry")

for element in friends:
    print(element)

在这里插入图片描述

2.2 插入元素

有些时候我们并不能无脑添加,而是需要插入到列表的指定位置。

friends=["Tom","Jerry","Tutu"]
#在Jerry后面插入Xiaomei
friends.insert(2,"Xiaomei")
for element in friends:
    print(element)

在这里插入图片描述

2.3 查找元素

如果你想知道一个元素是否存在一个列表中,使用in运算符:

friends=["Tom","Jerry","Tutu"]
friends.insert(2,"Xiaomei")
if "Tutu" in friends:
    print("yes")

在这里插入图片描述
列表中index方法会返回元素第一次出现的索引:

friends=["Tom","Jerry","Tutu"]
friends.insert(2,"Xiaomei")
n=friends.index("Xiaomei")
print(n)

在这里插入图片描述
如果这个值在列表中出现多次,你可以调用index方法并指定要查找的起始位置。下面的代码从上一次匹配的位置后面查找。

friends=["Tom","Jerry","Tutu","Xiaomei"]
friends.insert(2,"Xiaomei")
n1=friends.index("Xiaomei")
n2=friends.index("Xiaomei",n1+1)
print(n2)

在这里插入图片描述
使用index方法时,要查找的元素必须在列表中,否则会引发运行时的异常,所以,在使用index之前使用in方法来判断一下是一个不错的选择。

2.4 删除元素

列表的pop方法删除指定位置上的元素,假如我们有一个列表:

friends=["Tom","Jerry","Tutu","Xiaomei"]

我们要删除位置为1的jerry元素:

friends=["Tom","Jerry","Tutu","Xiaomei"]
for element in friends:
    print(element,end=" ")
friends.pop(1)
print()
for element in friends:
    print(element,end=" ")

在这里插入图片描述
被删除的元素后面所有元素向上移动一个位置来填充这个空隙,列表的大小减一。
列表中被删除元素将被pop返回,如果你调用pop方法时没有参数,它会删除并返回列表中的最后一个元素。
列表使用remove方法按值删除一个元素,不是按位置。

friends=["Tom","Jerry","Tutu","Xiaomei"]
for element in friends:
    print(element,end=" ")
friends.remove("Xiaomei")
print()
for element in friends:
    print(element,end=" ")

在这里插入图片描述
被删除的元素必须在列表中,否则会引发异常,为了避免运行时的错误,应该在试图删除一个元素之前首先确认一下元素在列表中:

element="Xiaomei"
if element in friends:
    friends.remove(element)

2.5 连接与重复

两个列表连接之后得到一个新列表,其中首先包含第一个列表的元素,然后是第二个列表的元素。
两个列表可以使用“+”运算符连接到一起:

A=[1,3,5,7,9]
B=[0,2,4,6,8]
C=A+B
for element in C:
    print(element,end=" ")

在这里插入图片描述
我们想重复一个列表多次,可以用“*”来表示重复的次数:

A=[1,3,5,7,9]
B=[0,2,4,6,8]
C=A*4
for element in C:
    print(element,end=" ")

在这里插入图片描述

2.6 相等性测试

“==”运算符比较两个列表是否以同样的顺序包含同样的元素。与之相反的运算符是“!=”

A=[1,3,5,7,9]
B=[1,3,5,7,9]
C=[9,1,3,5,7]
if A==B:
    print("yes")
else:
    print("no")
if(A==C):
    print("yes")
else:
    print("no")
if A!=B:
    print("no")
else:
    print("yes")
if(A!=C):
    print("no")
else:
    print("yes")

在这里插入图片描述

2.7 求和,最大值,最小值和排序

求和:sum
最大值:max
最小值:min
排序:sort

a=sum(A)
b=max(A)
c=min(A)
C.sort()
print(a)
print(b)
print(c)
for element in C:
    print(element,end=" ")

在这里插入图片描述

2.8 复制列表

列表本身不包含列表元素的值,而是包含一个指向真实列表的引用。如果复制这个引用,你会得到相同列表的另一个引用。

有时候你需要对一个列表进行复制,也就是得到一个与原列表以同样顺序包含同样元素的新列表,使用list函数:

A=[1,3,5,7,9]

D=list(A)
for element in D:
    print(element,end=" ")


在这里插入图片描述

2.8 切片

在Python中,切片运算符用于对序列(如字符串、列表、元组等)进行切片操作,提取出所需的子序列。切片运算符使用冒号(:)表示,并可以指定起始位置、结束位置和步长。

切片运算符的基本语法如下:

sequence[start:end:step]

其中,sequence表示待切片的序列,start表示起始位置(包含),end表示结束位置(不包含),step表示步长(可选,默认为1)。

下面是一些常见的切片操作示例:

  1. 提取子序列:可以通过指定起始位置和结束位置来提取子序列。
s = "Hello, world!"
print(s[7:12])  # 输出 "world"
  1. 指定步长:可以通过指定步长来间隔提取元素。
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(numbers[1:9:2])  # 输出 [1, 3, 5, 7]
  1. 省略参数:省略起始位置表示从序列的开头开始,省略结束位置表示直到序列的末尾,省略步长表示默认为1。
s = "Hello, world!"
print(s[:5])  # 输出 "Hello"
print(s[7:])  # 输出 "world!"
print(s[::2])  # 输出 "Hlo ol!"
  1. 使用负数索引:可以使用负数索引来从序列的末尾开始计数。
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(numbers[-4:-1])  # 输出 [6, 7, 8]

需要注意的是,切片操作返回的是一个新的序列,原始序列不会被修改。此外,切片操作是可选的,如果不提供任何参数,则将返回原始序列的副本。

切片运算符在Python中非常有用,它简便地实现了对序列的灵活操作,使得我们可以轻松地获取所需的子序列。

2.8 元组

在Python中,元组(Tuple)是一种不可变的有序序列。它类似于列表(List),但与列表不同的是,元组的元素不能被修改。元组使用圆括号 () 表示,其中的元素可以是任意类型,并且可以包含重复的元素。

以下是一些关于元组的基本操作示例:

  1. 创建元组:
# 使用圆括号创建元组
my_tuple = (1, 2, 3)
print(my_tuple)  # 输出 (1, 2, 3)

# 可以省略圆括号
my_tuple = 1, 2, 3
print(my_tuple)  # 输出 (1, 2, 3)

# 使用内置函数 tuple() 创建元组
my_tuple = tuple([1, 2, 3])
print(my_tuple)  # 输出 (1, 2, 3)
  1. 访问元组元素:
my_tuple = (1, 2, 3)
print(my_tuple[0])  # 输出 1
print(my_tuple[1:])  # 输出 (2, 3)
  1. 元组解包:
my_tuple = (1, 2, 3)
a, b, c = my_tuple
print(a)  # 输出 1
print(b)  # 输出 2
print(c)  # 输出 3
  1. 元组拼接:
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
concatenated_tuple = tuple1 + tuple2
print(concatenated_tuple)  # 输出 (1, 2, 3, 4, 5, 6)
  1. 元组遍历:
my_tuple = (1, 2, 3)
for item in my_tuple:
    print(item)

元组的不可变性使得它在一些特定场景下很有用,例如用于表示一组常量值或作为字典的键。同时,元组还可以作为函数的返回值,方便地返回多个值。
需要注意的是,由于元组的不可变性,如果需要对元组进行修改或添加元素,只能创建一个新的元组。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ES-分析器

分析器 两种常用的英语分析器 1 测试工具 #可以通过这个来测试分析器 实际生产环境中我们肯定是配置在索引中来工作 GET _analyze {"text": "My Moms Son is an excellent teacher","analyzer": "english" }2 实际效果 比如我们有下…

win10脚本 | 使用 Word 自动化对象模型找出指定路径下含有特定内容的.docx

场景 今年的实验日志被我放在这样一个文件夹下,每个月下是每天具体的.docx文件,里面记录了我的一些实验操作步骤。现在我需要补充一个实验,用到一个名为chatunitest的插件,但是这是很久之前做的事情了,我无法判断是哪…

PHP 之道(PHP The Right Way 中文版)

PHP 之道(PHP The Right Way 中文版)

2022年重庆市职业院校技能大赛高职组“信息安全管理与评估”赛项竞赛任务书-试题01

信息安全管理与评估 第一阶段 网络平台搭建与设备安全防护 目 录 第一阶段竞赛项目试题 介绍 所需的设备、机械、装置和材料 评分方案 注意事项 项目和任务描述 1.网络拓扑图 2.IP地址规划表 工作任务 任务1:网络平台搭建 任务2:网络安全设备…

Find My手链|苹果Find My技术与手链结合,智能防丢,全球定位

手链是一种首饰,配戴在手腕部位,多为金银等金属制品,也有矿石、水晶等制的。手链是链状的,以祈求平安,镇定心志和美观为主要用途。手链可以展示个人的风格和品味,通过选择不同材质、款式和颜色的手链&#…

这样的性能测试面试题,测试开发来了都不见得会把?

14.1 性能测试怎么测试 性能测试其实就是通过自动化工具模拟多种正常、峰值以及异常负载来对系统的各项性能指标进 行测试。负载测试和压力测试都属于性能测试,二者可结合使用。 性能指标主要有平均响应时间、90%响应时间、吞吐量、吞吐率,每秒事务数&am…

新版Spring Security6.2架构 (三) - Authorization

前言 书接上文,在经过了authentication后就是authorization了,本文还是对官网文档authorization的一个架构翻译和个人理解,后续的博客在写具体使用例子,从数据中认证,融合authentication和authorization的概念。 Aut…

【论文解读】Accelerating motion estimation by genetic algorithm approach in x265

时间:2018 级别:SCI 机构:College of Engineering Pune 摘要: 在过去 20 年,在视频编码和压缩领域,研究人员提出了几种减少运动估计的计算量和时间的技术,本文提出了一种基于遗传算法初始种群确…

电脑ffmpeg.dll丢失如何修复?3个详细修复的教程分享

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“ffmpeg.dll丢失”。ffmpeg.dll是FFmpeg多媒体框架中的一个重要组件,它负责处理音频和视频的编解码。当这个文件丢失或损坏时,可能会导致一些应用程序无法正常运行。…

2023年【G2电站锅炉司炉】报名考试及G2电站锅炉司炉考试资料

题库来源:安全生产模拟考试一点通公众号小程序 G2电站锅炉司炉报名考试根据新G2电站锅炉司炉考试大纲要求,安全生产模拟考试一点通将G2电站锅炉司炉模拟考试试题进行汇编,组成一套G2电站锅炉司炉全真模拟考试试题,学员可通过G2电…

如何有效利用餐厅预约小程序推广餐厅品牌

随着餐饮行业竞争的加剧,餐厅订座预约成为了吸引顾客的一种重要方式。而微信小程序作为移动互联网的重要入口之一,为餐厅提供了一个方便快捷的预约平台。本文将介绍如何使用乔拓云平台等第三方小程序制作平台来开发餐厅订座预约微信小程序。 首先&#x…

进程、容器与虚拟机的区别

进程、容器与虚拟机 参考:关于进程、容器与虚拟机的区别,你想知道的都在这! 进程、容器与虚拟机的结构图 进程 介绍 进程是一个正在运行的程序,它是一个个可执行文件的实例。当一个可执行文件从硬盘加载到内存中的时候&#xf…

【FreeRTOS】FreeRTOS移植stm32详细步骤介绍

我在查找FreeRTOS移植的相关教程特别少,所以想非常详细的介绍FreeRTOS移植stm32详细步骤,包括源码的下载,源码介绍,系统移植,代码验证等,每一步都有对应的介绍和解释,希望可以帮助到你们。 文章…

1. mycat入门

1、mycat介绍 Mycat 是一个开源的分布式数据库系统,但是由于真正的数据库需要存储引擎,而 Mycat 并没有存 储引擎,所以并不是完全意义的分布式数据库系统。MyCat是目前最流行的基于Java语言编写的数据库中间件,也可以理解为是数据…

Firmware Analysis Plus (Fap)固件模拟安装教程(最新)

最近在搞IoT的研究,但是难在设备比较难弄,只有固件,而没有设备,买吧,又太费钱,不划算。好在有很多项目可以在模拟环境中运行固件。但是几乎没有一个平台能够模拟所有硬件设备。IoT产品的架构也不尽相同。 …

C++初学教程四

一、程序设计 程序设计的三种基本结构:顺序、选择、循环 选择结构(也叫分支结构) :判断所指定的条件是否满足,决定从给定的两组或多组操作选择其中的一种。 计算机的判断是通过对表达式的计算来实现,也就是关系运算、逻辑运算。 用语句来体现就是if语…

53 代码审计-TP5框架及无框架变量覆盖反序列化

目录 演示案例:Metinfo-无框架-变量覆盖-自动审计或搜索phpmyadmin-无框架-反序列化-自动审计或搜索Thinkphp5-有框架-搭建使用入口访问调试SQL等 演示案例: Metinfo-无框架-变量覆盖-自动审计或搜索 变量覆盖会直接覆盖原始变量,来形成新的变量值 搜索关键字或者…

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Spring IOC底层实现

第一章 SpringIOC底层实现 IOC:将对象的控制器反转给Spring 1.1 BeanFactory与ApplicationContexet BeanFactory:IOC容器的基本实现,是Spring内部的使用接口,是面向Spring本身的,不是提供给开发人员使用的。****Appli…

APP自动化测试工具大全

一、UI自动化测试工具 1. uiautomator2 openatx开源的ui自动化工具,支持Android和iOS。主要面向的编程语言是Python,API设计简洁易用,在开源社区也是很受欢迎。 安装: pip install --upgrade --pre uiautomator2# Or you can …

IO / day07 作业

1. 使用消息队列完成两个进程之间相互通信 代码 #include <myhead.h>//define a msg struct type struct msgbuf {long mtype; //消息类型char mtext[1024]; //消息正文大小};//macro msg size #define SIZE (sizeof(struct msgbuf)-sizeof(long))int recv(int mtype_r…