当前位置: 首页 > news >正文

【python基础(三)】操作列表:for循环、正确缩进、切片的使用、元组

文章目录

  • 一. 遍历整个列表
    • 1. 在for循环中执行更多操作
    • 2. 在for循环结束后执行一些操作
  • 二. 避免缩进错误
  • 三. 创建数值列表
    • 1. 使用函数range()
    • 2. 使用range()创建数字列表
    • 3. 指定步长。
    • 4. 对数字列表执行简单的统计计算
    • 5. 列表解析
  • 五. 使用列表的一部分-切片
    • 1. 切片
    • 2. 遍历切片
    • 3. 复制列表(浅拷贝与深拷贝)
    • 4. 元组

一. 遍历整个列表

if __name__ == '__main__':magicians = ['alice', 'david', 'carolina']for magician in magicians:print(magician)

 

1. 在for循环中执行更多操作

if __name__ == '__main__':magicians = ['alice', 'david', 'carolina']for magician in magicians:print(f"{magician.title()}, that was a great trick")

 

2. 在for循环结束后执行一些操作

在for循环后面,没有缩进的代码都只执行一次,不会重复执行。

if __name__ == '__main__':magicians = ['alice', 'david', 'carolina']for magician in magicians:print(f"{magician.title()}, that was a great trick")print("Thank you。")

 

二. 避免缩进错误

Python根据缩进来判断代码行与前一个代码行的关系。

简单地说,它要求你使用缩进让代码整洁而结构清晰。在较长的Python程序中,你将看到缩进程度各不相同的代码块,从而对程序的组织结构有大致的认识。

下面来看一些较为常见的缩进错误。

忘记缩进
对于位于for语句后面且属于循环组成部分的代码行,一定要缩进。

忘记缩进额外的代码行:

  magicians = ['alice', 'david', 'carolina']for magician in magicians:print(f"{magician.title()}, that was a great trick!")print(f"I can't wait to see your next trick, {magician.title()}.\n") # 也需要进行缩进

 
不必要的缩进
函数调用print()(见❶)无须缩进,因为它并非循环的组成部分。

  message = "Hello Python world!"print(message)

在这里插入图片描述
 
遗漏了冒号
for语句末尾的冒号告诉Python,下一行是循环的第一行。

  magicians = ['alice', 'david', 'carolina']for magician in magiciansprint(magician)

如果不小心遗漏了冒号,如❶所示,将导致语法错误,因为Python不知道你意欲何为。

 

三. 创建数值列表

1. 使用函数range()

for value in range(1, 5):print(value)

它不会打印5,只有1到4。

 

2. 使用range()创建数字列表

要创建数字列表,可使用函数list()将range()的结果直接转换为列表。

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

 

3. 指定步长。

为此,可给这个函数指定第三个参数,看一个例子:
打印1~10的偶数:

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

 
创建一个列表,其中包含前10个整数(1~10)的平方

  squares = []for value in range(1,11):
❶     squares.append(value**2)print(squares)

 

4. 对数字列表执行简单的统计计算

最小、最大、总和。

>>> digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> min(digits)
0
>>> max(digits)
9
>>> sum(digits)
45

本节使用的数字列表都很短,但这里介绍的知识也适用于包含数百万个数的列表。

 

5. 列表解析

列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素

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

 

五. 使用列表的一部分-切片

处理列表的部分元素,Python称之为切片。

1. 切片

要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range()一样,Python在到达第二个索引之前的元素后停止。

  players = ['charles', 'martina', 'michael', 'florence', 'eli']print(players[0:3])# ['charles', 'martina', 'michael']

如果没有指定第一个索引,Python将自动从列表开头开始:

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[:4])

如果要提取从第三个元素到列表末尾的所有元素,可将起始索引指定为2,并省略终止索引:

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[2:])

如果要输出名单上的最后三名队员,可使用切片players[-3:]:

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[-3:])

 

2. 遍历切片

遍历前三名队员,并打印他们的名字:

  players = ['charles', 'martina', 'michael', 'florence', 'eli']print("Here are the first three players on my team:")for player in players[:3]:print(player.title())

 

3. 复制列表(浅拷贝与深拷贝)

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

❶ my_foods = ['pizza', 'falafel', 'carrot cake']
❷ friend_foods = my_foods[:]print("My favorite foods are:")print(my_foods)print("\nMy friend's favorite foods are:")print(friend_foods)

如果只是将my_foods赋给friend_foods,就不能得到两个列表。

  my_foods = ['pizza', 'falafel', 'carrot cake']# 这行不通:
❶ friend_foods = my_foodsmy_foods.append('cannoli')friend_foods.append('ice cream')print("My favorite foods are:")print(my_foods)print("\nMy friend's favorite foods are:")print(friend_foods)# My favorite foods are:
# ['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']# My friend's favorite foods are:
# ['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']

这种语法实际上是让Python将新变量friend_foods关联到已与my_foods相关联的列表,因此这两个变量指向同一个列表。类似于浅拷贝。

 

4. 元组

Python将不能修改的值称为不可变的,而不可变的列表被称为元组。

定义元组
元组看起来很像列表,但使用圆括号而非中括号来标识。
定义元组后,就可使用索引来访问其元素,就像访问列表元素一样。

❶ dimensions = (200, 50)print(dimensions[0])print(dimensions[1])
dimensions = (200, 50)
for dimension in dimensions:print(dimension)

虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述矩形的尺寸,可重新定义整个元组:

❶ dimensions = (200, 50)print("Original dimensions:")for dimension in dimensions:print(dimension)❷ dimensions = (400, 100)print("\nModified dimensions:")for dimension in dimensions:print(dimension)

如果需要存储的一组值在程序的整个生命周期内都不变,就可以使用元组。

 

参考:《Python编程:从入门到实践(第二版)》

相关文章:

【python基础(三)】操作列表:for循环、正确缩进、切片的使用、元组

文章目录 一. 遍历整个列表1. 在for循环中执行更多操作2. 在for循环结束后执行一些操作 二. 避免缩进错误三. 创建数值列表1. 使用函数range()2. 使用range()创建数字列表3. 指定步长。4. 对数字列表执行简单的统计计算5. 列表解析 五. 使用列表的一部分-切片1. 切片2. 遍历切片…...

使用VSCode调试全志R128的C906 RISC-V核心

使用 VSCode 调试 调试 XuanTie C906 核心 准备工具 T-Head DebugServer(CSkyDebugServer) - 搭建调试服务器 下载地址:T-Head DebugServer手册:T-Head Debugger Server User Guide驱动:cklink_dirvers VSCode - 开…...

Node.js之http模块

http模块是什么? http 模块是 Node,js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer() 方法,就能方便的把一台普通的电脑,变成一台Web 服务器,从而对外提供 Web 资源服务。 如果我们想在node…...

golang 断点调试

1.碰见如下报错,调试器没有打印变量信息 Delve is too old for Go version 1.21.2 (maximum supported version 1.19) 2. 解决办法 升级delve delve是go语言的debug工具。 go install github.com/go-delve/delve/cmd/dlvlatest报错 Get “https://proxy.golang.org/github…...

定时器如何计算触发频率?

定时器触发频率的计算公式为:定时器时钟频率/(预分频系数*计数周期1)。其中,定时器时钟频率是指定时器所连接的总线频率,预分频系数和计数周期需要根据具体的需求进行设置。预分频系数用于将总线频率分频,计…...

【数据库】数据库中的检查点Checkpoint,数据落盘的重要时刻

检查点(checkpoint) ​专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定…...

关于 Docker

关于 Docker 1. 术语Docker Enginedockerd(Docker daemon)containerdOCI (Open Container Initiative)runcDocker shimCRI (Container Runtime Interface)CRI-O 2. 容器启动过程在 Linux 中的实现daemon 的作用 Docker 是个划时代的开源项目,…...

​LeetCode解法汇总2342. 数位和相等数对的最大和

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 给你一个下…...

数据库的级联删除

级联删除是指在数据库中删除一个对象时,与该对象有关的其他对象也被自动删除。在 Django 中,级联删除通常通过在模型中定义外键时使用 on_delete 参数来实现。以下是一些常见的 on_delete 选项: 1.models.CASCADE: 当关联的对象被删除时&…...

【Python 千题 —— 基础篇】奇数列表

题目描述 题目描述 创建奇数列表。使用 for 循环创建一个包含 20 以内奇数的列表。 输入描述 无输入。 输出描述 输出创建的列表。 示例 示例 ① 输出: 创建的奇数列表为: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]代码讲解 下面是本题的代码: #…...

当npm下载库失败时可以用cnpm替代

下载cnpm npm install -g cnpm --registryhttp://registry.npmmirror.com 然后使用cnpm代替npm下载即可 cnpm install...

PyTorch多GPU训练时同步梯度是mean还是sum?

PyTorch 通过两种方式可以进行多GPU训练: DataParallel, DistributedDataParallel. 当使用DataParallel的时候, 梯度的计算结果和在单卡上跑是一样的, 对每个数据计算出来的梯度进行累加. 当使用DistributedDataParallel的时候, 每个卡单独计算梯度, 然后多卡的梯度再进行平均.…...

Spring Framework IoC依赖注入-按Bean类型注入

Spring Framework 作为一个领先的企业级开发框架,以其强大的依赖注入(Dependency Injection,DI)机制而闻名。DI使得开发者可以更加灵活地管理对象之间的关系,而不必过多关注对象的创建和组装。在Spring Framework中&am…...

IDEA运行thymeleaf的html文件打开端口为63342且连不上数据库

这边贴apple.html代码 <!DOCTYPE html> <html xmlns:th"http://www.thymeleaf.org"> <head><meta charset"UTF-8"><title>User List</title> </head> <body> <h1>User List</h1> <table&…...

sql报错注入和联合注入

1.[NISACTF 2022]join-us 过滤&#xff1a; as IF rand() LEFT by updatesubstring handler union floor benchmark COLUMN UPDATE & sys.schema_auto_increment_columns && 11 database case AND right CAST FLOOR left updatexml DATABASES BENCHMARK BY sleep…...

028 - STM32学习笔记 - ADC结构体学习(二)

028 - STM32学习笔记 - 结构体学习&#xff08;二&#xff09; 上节对ADC基础知识进行了学习&#xff0c;这节在了解一下ADC相关的结构体。 一、ADC初始化结构体 在标准库函数中基本上对于外设都有一个初始化结构体xx_InitTypeDef&#xff08;其中xx为外设名&#xff0c;例如…...

Pytest自动化测试框架:mark用法---测试用例分组执行

pytest中的mark&#xff1a; mark主要用于在测试用例/测试类中给用例打标记(只能使用已注册的标记名)&#xff0c;实现测试分组功能&#xff0c;并能和其它插件配合设置测试方法执行顺序等。 如下图&#xff0c;现在需要只执行红色部分的测试方法&#xff0c;其它方法不执行&am…...

【TCP连接的状态】

linux查看tcp的状态命令&#xff1a; 1&#xff09;、netstat -nat 查看TCP各个状态的数量 2&#xff09;、lsof -i:port 可以检测到打开套接字的状况 3)、 sar -n SOCK 查看tcp创建的连接数 4)、tcpdump -iany tcp port 9000 对tcp端口为9000的进行抓包 查看占用端口…...

Node.js入门指南(一)

目录 Node.js入门 什么是Node.js Node.js的作用 Node.js安装 Node.js编码注意事项 Buffer(缓冲器&#xff09; 定义 使用 fs模块 概念 文件写入 文件读取 文件移动与重命名 文件删除 文件夹操作 查看资源状态 路径问题 path模块 Node.js入门 什么是Node.js …...

使用Grpc实现高性能PHP RPC服务

文档&#xff1a;Quick start | PHP | gRPC 下面将介绍使用 Grpc 和 Protobuf 实现高性能 RPC 服务的具体步骤&#xff1a; 1. 安装 Grpc 和 Protobuf 首先需要安装 Grpc 和 Protobuf。可以从官网下载相应的安装包&#xff08;Supported languages | gRPC&#xff09;或通过…...

STM32G4串口硬件FIFO实战:告别频繁中断,用CubeMX配置接收超时(RTO)的完整流程

STM32G4串口硬件FIFO与接收超时(RTO)深度优化指南 在嵌入式系统开发中&#xff0c;串口通信是最基础也最常用的外设之一。面对高速数据流时&#xff0c;传统的中断接收方式会导致CPU频繁响应&#xff0c;严重影响系统整体性能。STM32G4系列引入的硬件FIFO功能&#xff0c;配合接…...

《OpenClaw搭建AI订阅助手:全链路落地配置思路指南》

OpenClaw做AI助手订阅服务的真正壁垒&#xff0c;从来不是聊天界面的美观程度&#xff0c;也不是集成了多少大模型&#xff0c;而是能否构建一个可自我迭代的知识交付闭环。大多数尝试者最终失败&#xff0c;都是因为把订阅服务做成了一个静态的问答机器人&#xff0c;用户问完…...

Docker容器在支付清算系统中神秘崩溃?(央行科技司认证的8类调试路径全披露)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Docker容器在支付清算系统中神秘崩溃&#xff1f;&#xff08;央行科技司认证的8类调试路径全披露&#xff09; 支付清算系统对稳定性与可追溯性要求极高&#xff0c;Docker容器偶发性崩溃常导致交易状…...

压缩包密码遗忘的终极解决方案:3分钟快速找回指南

压缩包密码遗忘的终极解决方案&#xff1a;3分钟快速找回指南 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 你是否曾经因为忘记压缩包密码…...

解锁QQ音乐加密文件:3步实现音乐跨平台自由的高效方案

解锁QQ音乐加密文件&#xff1a;3步实现音乐跨平台自由的高效方案 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾因QQ音乐下载的歌曲无法在其他设备播放而烦恼&am…...

长期使用Taotoken服务后对其API稳定性和故障切换机制的体会

长期使用Taotoken服务后对其API稳定性和故障切换机制的体会 1. 视频项目中的高频调用实践 在最近一个视频内容生成项目中&#xff0c;我们团队需要频繁调用大模型API进行脚本润色、分镜描述生成和字幕校对。项目周期紧张时&#xff0c;日均API调用量达到数千次。Taotoken的统…...

对比不同模型在 Taotoken 上的实际调用耗时与性价比感受

不同模型在 Taotoken 上的调用耗时与性价比观察 1. 测试环境与模型选择 本次测试选取了 Taotoken 模型广场中三款不同定位的模型进行对比观察&#xff1a;claude-sonnet-4-6、claude-haiku-4-8 和 claude-opus-4-9。测试环境使用 Python 3.9 和官方 OpenAI 兼容 SDK&#xff…...

Jexactyl:现代化游戏服务器控制面板部署与配置指南

1. 项目概述&#xff1a;一个现代化的游戏服务器控制面板如果你自己或者身边有朋友在运营《我的世界》、CS2、Rust这类游戏的服务器&#xff0c;那你大概率听说过或者用过Pterodactyl这个开源的游戏服务器控制面板。它功能强大&#xff0c;但界面和用户体验&#xff0c;说实话&…...

VSCode多智能体协同编程不是未来,是现在:2026 Q1已上线的4项GA特性+2项Preview功能(附微软内部性能压测原始数据)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;VSCode多智能体协同编程不是未来&#xff0c;是现在 VSCode 已通过插件生态与开放 API 实现多智能体&#xff08;Multi-Agent&#xff09;协同编程的生产级落地——开发者不再需要等待“下一代 IDE”&…...

别再卡在Solving environment了!保姆级教程:用阿里云镜像源为CUDA 12.2快速安装PyTorch

深度学习环境搭建实战&#xff1a;用阿里云镜像源高效安装PyTorch与CUDA 12.2 刚接触深度学习的朋友们&#xff0c;十有八九会在环境搭建这一步卡壳。特别是当你在Anaconda里输入conda install pytorch后&#xff0c;盯着屏幕上那个仿佛永远转不完的"Solving environment&…...