Python--操作列表

在这里插入图片描述

1.for循环

1.1 for循环的基本语法

for variable in iterable:  # 执行循环体  # 这里可以是任何有效的Python代码块

这里的variable是一个变量名,用于在每次循环迭代时临时存储iterable中的下一个元素。
iterable是一个可迭代对象,比如列表(list)、集合(set)、范围(range)、元组(tuple)、字符串(string)、字典(dictionary)。

在每次循环迭代中,iterable中的下一个元素会被赋值给variable,然后执行循环体内的代码块,代码块可以有任何条语句,只要它们的缩进相同。当iterable中的所有元素都被遍历后,循环就会结束。

1.2 for循环在列表中的应用

my_list = [1, 2, 3, 4, 5]  # 创建一个列表  # 使用for循环遍历列表  
for number in my_list:  print(number)  # 打印列表中的每个数字

在这个示例中,number是循环变量,my_list是可迭代对象。在每次循环迭代中,number被赋值为my_list中的下一个元素,然后执行print(number)语句。当my_list中的所有元素都被遍历后,循环结束。

1.3.遍历范围(使用 range() 函数)

for i in range(5):  # 默认从0开始,到5(不包括5)  print(i)

range() 是 Python 中的一个内置函数,用于生成一个整数序列,通常用于 for 循环中。range() 函数的语法如下:

range(start, stop[, step])
参数解释:
start:序列的起始值(包含),默认为 0。
stop:序列的结束值(不包含),即生成的序列中最大值为 stop - 1。
step:序列中的元素之间的步长,即每个相邻元素的差值,默认为 1

2.遍历整个列表

下面使用一个循环输出所有学生的姓名:

students = ['刘备', '曹操', '孙权']
for s in students:  #输出学生的姓名print(s,end=' ')

上面print利用end=’ '把每次输出的换行改为空格.

2.1 print详细使用

print()函数的基本语法如下:

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)参数解释: 
*objects:要打印的一个或多个对象,它们之间用逗号分隔。 这些对象可以是字符串、数字、变量、表达式等。 
sep:用于在对象之间插入的字符串,默认为一个空格。 
end:在最后一个对象之后附加的字符串,默认为换行符\n。 
file:指定输出流,默认为sys.stdout,即标准输出(通常是控制台)。 
flush:是否立即刷新输出流,默认为False。在交互式模式下,flush参数通常被忽略; 但在某些I/O库中,例如在写入文件或网络连接时,它可能会很有用。 
  1. 打印字符串
print("欢迎!")
  1. 打印变量
name = "sss"  
age = 30  
print("我的名字叫", name, "我今年", age, "岁了。")
  1. 格式化输出(使用sep和end参数)
print("中国", "西安", "sss", sep=', ', end='!!!\n')

3.避免缩进错误
Python 根据缩进来判断代码行与程序其他部分的关系。
下面来看⼀些较为常见的缩进错误。

3.1 忘记缩进

位于 for 语句后面且属于循环组成部分的代码,⼀定要缩进。 如果忘记缩进,python会提醒你

students = ['刘备', '曹操', '孙权']
for s in students:  #输出学生的姓名
print(s)  #没有缩进,会出现错误提示

通常,将紧跟在 for 语句后面的代码行缩进,可消除这种缩进错误。

3.2 忘记缩进其它代码

如果位于for语句后面有多条语句,那么它们的缩进应该一直.例如下面的代码.需要的操作如下:

students = ['刘备', '曹操', '孙权']
for s in students:  #输出学生的姓名print(f'{s}','你的学习非常好')print('期待下节课见面!')

在这里插入图片描述

如果缩进不对,输出的结果如下:

students = ['刘备', '曹操', '孙权']
for s in students:  #输出学生的姓名print(f'{s}','你的学习非常好')
print('期待下节课见面!')  #这一句没有缩进,不属于for循环

在这里插入图片描述

3.3 不必要的缩进

message = 'sss'print(message)

调用 print() 无须缩进,因此 Python将指出这种错误:

3.4 漏写冒号

for 语句末尾的冒号告诉 Python,下⼀行是循环的第⼀行。

students = ['刘备', '曹操', '孙权']
for s in students  #输出学生的姓名print(s)

4.创建数值列表
列表非常适合用于存储数值集合。

4.1 使用range()函数

函数 range() 让你能够轻松地生成⼀系列的数。
要创建数值列表,可使用 list() 函数将 range() 的结果直接转换为列表。如果将 range() 作为 list() 的参数,输出将是⼀个数值列表。

numbers = list(range(1, 6))
print(numbers)

例如,下面的代码打印 1〜10 的偶数:

even_numbers = list(range(2, 11, 2)) 
print(even_numbers) 

例如,下面的代码,创建一个列表,保存1~10的平方数:

squares = list(range(1,11)) 
i = 0
for v in squares: v2 = v**2   # **表示指数 squares[i] = v2 i = i+1 
print(squares) 

下面的代码和上面的作用相同:

squares = [] #表明squares是列表
for v in range(11): #v从1遍历到10,不包括11squares.append(v**2)
print(squares)

4.2数值列表统计计算

你可以轻松地找出数值列表中的最大值、最小值和求和:

digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
a = min(digits)
b = max(digits)
c = sum(digits)
print(digits)
print('最小值:',a,',最大值:',b,',和:',c)

4.3 列表推导式

列表推导式(list comprehension)将 for 循环和创建新元素的代码合并成⼀行,并自动追加新元素。
下面使用列表推导式创建平方数列表:

squares = [v**2 for v in range(1,11)]
print(squares)

在方括号内,定义⼀个表达式,用于生成要存储到列表中的值。如表达式 value**2,它计算平方值。接下来,编写⼀个 for循环,用于给表达式提供值。

5.使用列表的一部分
你可以处理列表的部分元素,在Python 中称为切片(slice)。

5.1 切片

切片(slice)是一种简洁的方式来访问列表中的一部分元素。切片操作基于索引进行,可以返回一个新的列表,这个新列表包含原列表中指定范围内的元素。
切片的基本语法如下:

list[start:stop:step]
说明:list 是要进行切片的列表。start 是切片的起始索引(包含),默认为0。stop 是切片的结束索引(不包含),默认为列表的长度。step 是切片的步长,即每隔多少个元素取一个值,默认为1。如果步长为负数,则表示从后往前取元素。

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

# 创建一个列表  
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  # 切片操作  
# 取前三个元素(索引0到3,不包括3,等同my_list[0:3])  
print(my_list[:3])  # 输出: [0, 1, 2]  ,由于没有指定起始,默认为0 # 取从索引3到索引7的元素(不包括7)  
print(my_list[3:7])  # 输出: [3, 4, 5, 6]  # 取所有元素(等同于my_list)  
print(my_list[:])  # 输出: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  # 取每隔一个元素的元素(步长为2)  
print(my_list[::2])  # 输出: [0, 2, 4, 6, 8]  # 从后往前取,取最后三个元素(索引-3到-1)  
print(my_list[-3:])  # 输出: [7, 8, 9]  # 反转列表(从后往前取,步长为-1)  
print(my_list[::-1])  # 输出: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

切片操作不会修改原列表,而是返回一个新的列表。

5.2 遍历切片

遍历切片(slice)与遍历列表(list)或其他可迭代对象的方式相同。切片是列表的一个子集,因此你可以使用相同的循环结构来遍历它。以下是如何遍历切片的示例:

# 创建一个列表  
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  # 创建一个切片,例如从索引1到索引5(不包括5)  
slice_of_list = my_list[1:5]  # 使用for循环遍历切片  
for item in slice_of_list:  print(item)  # 输出结果将是:  
# 1  
# 2  
# 3  
# 4

在很多情况下,切片是很有用的。例如,在编写游戏时,可以在玩家退出游戏时将其最终得分加⼊⼀个列表,然后将该列表按降序排列,再创建⼀个只包含前三个得分的切片,以获取该玩家的三个最高得分;在处理数据时,可以使用切片来进行批量处理;在编写 Web 应用程序时,可以使用切片来分页显示信息。

5.3 复制列表

要复制列表,可以创建⼀个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。

li1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
li2 = li1[:]  #切片会创建一个临时的列表
print('li1:',li1)
print('li2:',li2)
li1.append(100) #新增一个元素100
li2.append(200) #新增一个元素200
print('li1,新增100后:',li1)
print('li2,新增200后:',li2)

从上面的输出结果能看出,li1和li2是两个独立的列表。
下面是错误的示例


li1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
li2 = li1 #li2和li1关联到同一个列表
print('li1:',li1)
print('li2:',li2)
li1.append(100) #新增一个元素100
li2.append(200) #新增一个元素200
print('li1,新增100后:',li1)
print('li2,新增200后:',li2)

6.元组

将不能修改的值称为不可变的,而不可变的列表称为元组(tuple)。
元组(Tuple)它用于存储一系列不可变的值。这些值可以是任何数据类型,并且它们之间通过逗号分隔,整体由圆括号包围。

6.1 元组的特性:

不可变:元组中的元素在创建后不能被修改。

索引访问:元组中的元素可以通过索引访问。

可以包含任何数据类型:元组中的元素可以是整数、浮点数、字符串、列表、元组等。

# 创建一个简单的元组  
t1 = (1, 2, 3, 4, 5)  
print(t1)    # 输出(1, 2, 3, 4, 5)# 访问元组中的元素  
print(t1[0])  # 输出: 1  # 元组中的元素可以是不同类型  
t2 = (1, 'hello', 3.14, [4, 5, 6])  # 元组中的元组  
t3 = (1, (2, 3), 4)  # 遍历元组  
for item in t2:  print(item)  
#15,16行,输出结果如下:
# 1
# hello
# 3.14
# [4, 5, 6]

注意:严格地说,元组是由逗号标识的,圆括号只是让元组看起来更整洁、更清晰。如果你要定义只包含⼀个元素的元组,必须在这个元素后⾯加上逗号:

t1 = (1)
t2 = (1,)
t3 = 1,
print(t1,type(t1)) #type输出括号里的类型
print(t2,type(t2))
print(t3,type(t3))

6.2 遍历元组的元素

像列表⼀样,也可以使用for 循环来遍历元组中的所有值。


t1 = (1,2,3,4,5) 
for v in t1: print(v,end=' ') #用空格分隔数据 ,输出:1 2 3 4 5 

6.3 修改元组变量的值

元组的值不能修改,它是不可变的值。

t1 = (1,2,3,4,5)
t1[0] = 100 #试图修改元组第一个元素的值

但可以修改元组变量的值

t1 = (1,2,3,4,5)
#t1[0] = 100 #错误
t1 = ('中国','趣字节')
print(t1) #输出 ('中国', '趣字节')

上面的代码并没有修改元组的值,只是把新元组关联到变量t1 ,给变量重新赋值是合法的

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

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

相关文章

YOLOv8+注意力机制+PyQt5玉米病害检测系统完整资源集合

资源包含可视化的玉米病害检测系统,基于最新的YOLOv8注意力机制训练的玉米病害检测模型,和基于PyQt5制作的可视玉米病害系统,包含登陆页面和检测页面,该系统可自动检测和识别图片或视频当中出现的七类玉米病害:矮花叶病…

Maya没有Arnold材质球

MAYA 没有Arnold材质球_哔哩哔哩_bilibili

软件测试基础篇

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 “尽早的介入测试,遇到问题的解决成本就越低” 随着软件测试技术的发展,测试工作由原来单一的寻找缺陷逐渐发展成为预防缺陷,…

2024.9.26 作业 +思维导图

一、作业 1、什么是虚函数?什么是纯虚函数 虚函数:函数前加关键字virtual,就定义为虚函数,虚函数能够被子类中相同函数名的函数重写 纯虚函数:把虚函数的函数体去掉然后加0;就能定义出一个纯虚函数。 2、基…

前端——实现时钟 附带小例子

创建日期对象 toLocaleDateString() 获取日期 console.log(date.toLocaleDateString()) toLocaleTimeString() 获取时间 console.log(date.toLocaleTimeString()) toLocaleString() 获取日期和时间 console.log(date.toLocaleString()) date.getDay() 获取星期几 周日为…

软件无线电3-微相E316和HackRF实现FM调制解调

前面介绍了基于Matlab、矢量信号器和HackRF One实现射频下的FM调制解调,今天分享的内容是用微相E316替代矢量信号器完成发射工作。注意本文仅用于科研和学习,私自搭建电台属于违法行为。 1.概述 微相E316和HackRF One实现FM调制解调测试框图如1所示&am…

【后端开发】JavaEE初阶—线程的理解和编程实现

前言: 🌟🌟本期讲解多线程的知识哟~~~,希望能帮到屏幕前的你。 🌈上期博客在这里:【后端开发】JavaEE初阶——计算机是如何工作的???-CSDN博客 🌈感兴趣的小伙…

哈希表(一)

一、基础知识 哈希表的优点: 查找key的时间效率是O(1) 什么时候要用到哈希表: 查询元素的出现问题(是否出现过,是否在集合里,出现次数等) 哈希表的三种数据结构: 数组…

4--苍穹外码-SpringBoot项目中分类管理 详解

目录 新增分类 分类分页查询 启用禁用分类 根据类型查询 修改分类 本文介绍SpringBoot项目中的分类管理,操作类似员工管理模块,具体详解可见以下博客,此处给出各部分代码 2--SpringBoot项目中员工管理 详解(一)-C…

Web端云剪辑解决方案,BS架构私有化部署,安全可控

传统视频制作流程繁琐、耗时,且对专业设备和软件的高度依赖,常常让企业望而却步,美摄科技凭借其强大的技术实力和创新能力,推出了面向企业用户的Web端云剪辑解决方案,为企业提供一站式、高效、便捷的视频生产平台。 B…

[WMCTF2020]Make PHP Great Again 2.01

又是php代码审计,开始吧. 这不用审吧,啊喂. 意思就是我们要利用require_once()函数和传入的file的value去读取flag的内容.,貌似呢require_once()已经被用过一次了,直接读取还不行,看一下下面的知识点. require_once() require…

【C++位图】构建灵活的空间效率工具

目录 位图位图的基本概念如何用位图表示数据位图的基本操作setresettest 封装位图的设计 总结 在计算机科学中,位图(Bitmap)是一种高效的空间管理数据结构,广泛应用于各种场景,如集合操作、图像处理和资源管理。与传统…

【Docker】基于docker compose部署artifactory-cpp-ce服务

基于docker compose部署artifactory-cpp-ce服务 1 环境准备2 必要文件创建与编写3 拉取镜像-创建容器并后台运行4 访问JFog Artifactory 服务 1 环境准备 docker 以及其插件docker compose ,我使用的版本如下图所示: postgresql 的jdbc驱动, 我使用的是…

Qt优秀开源项目之二十三:QSimpleUpdater

QSimpleUpdater是开源的自动升级模块,用于检测、下载和安装更新。 github地址:https://github.com/alex-spataru/QSimpleUpdater QSimpleUpdater目前Star不多(911个),但已在很多开源项目看到其身影,比如Not…

Scikit-LearnTensorFlow机器学习实用指南(三):一个完整的机器学习项目【下】

机器学习实用指南(三):一个完整的机器学习项目【下】 作者:LeonG 本文参考自:《Hands-On Machine Learning with Scikit-Learn & TensorFlow 机器学习实用指南》,感谢中文AI社区ApacheCN提供翻译。 本文全部代码和数据集保存在…

Rust - 字符串:str 与 String

在其他语言中,字符串通常都会比较简单,例如 “hello, world” 就是字符串章节的几乎全部内容了。 但是Rust中的字符串与其他语言有所不同,若带着其他语言的习惯来学习Rust字符串,将会波折不断。 所以最好先忘记脑中已有的关于字…

LiveNVR监控流媒体Onvif/RTSP功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大

LiveNVR监控流媒体Onvif/RTSP功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大 1、视频广场2、录像回看3、RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 1、视频广场 视频广场 -》播放 ,左键单击可以拉取矩形框,放大选中的范围&#xff…

汽车总线之----FlexRay总线

Introduction 随着汽车智能化发展,车辆开发的ECU数量不断增加,人们对汽车系统的各个性能方面提出了更高的需求,比如更多的数据交互,更高的传输带宽等。现如今人们广泛接受电子功能来提高驾驶安全性,像ABS防抱死系统&a…

网络安全 DVWA通关指南 DVWA Weak Session IDs(弱会话)

DVWA Weak Session IDs(弱会话) 文章目录 DVWA Weak Session IDs(弱会话)Low LevelMedium LevelHigh LevelImpossible Level 参考文献 WEB 安全靶场通关指南 相关阅读 Brute Force (爆破) Command Injection(命令注入…

SpringSecurity-用户认证

1、用户认证 1.1 用户认证核心组件 我们系统中会有许多用户,确认当前是哪个用户正在使用我们系统就是登录认证的最终目的。这里我们就提取出了一个核心概念:当前登录用户/当前认证用户。整个系统安全都是围绕当前登录用户展开的,这个不难理…