【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编程:从入门到实践(第二版)》

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

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

相关文章

10、信息打点——APP小程序篇抓包封包XP框架反编译资产提取

APP信息搜集思路 外在——抓包封包——资产安全测试 抓包(Fiddle&茶杯&burp)封包(封包监听工具),提取资源信息 资产收集——资源提取——ICO、MAD、hash——FOFA等网络测绘进行资产搜集 外在——功能逻辑 内在…

【原创】为MybatisPlus增加一个逻辑删除插件,让XML中的SQL也能自动增加逻辑删除功能

前言 看到这个标题有人就要说了,D哥啊,MybatisPlus不是本来就有逻辑删除的配置吗,比如TableLogic注解,配置文件里也能添加如下配置设置逻辑删除。 mybatis-plus:mapper-locations: classpath*:mapper/*.xmlconfiguration:mapUnd…

【Linux】-进程间通信-共享内存(SystemV),详解接口函数以及原理(使用管道处理同步互斥机制)

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

Vue3+Vite实现工程化,插值表达式和v-text以及v-html

1、插值表达式 插值表达式最基本的数据绑定形式是文本插值,它使用的是"Mustache"语法,即 双大括号{{}} 插值表达式是将数据 渲染 到元素的指定位置的手段之一插值表达式 不绝对依赖标签,其位置相对自由插值表达式中支持javascript的…

XmlElement注解在Java的数组属性上,以产生多个相同的XML元素

例如&#xff0c;下面这段XML数据&#xff0c;有多个data元素&#xff0c;并且它们级别相同: <?xml version"1.0" encoding"UTF-8"?><request><reqtype>05</reqtype><secret>test</secret><body><userid&…

93.STL-系统内置仿函数

目录 算术仿函数 关系仿函数 逻辑仿函数 C 标准库中提供了一些内置的函数对象&#xff0c;也称为仿函数&#xff0c;它们通常位于 <functional> 头文件中。以下是一些常见的系统内置仿函数&#xff1a; 算术仿函数 功能描述&#xff1a; 实现四则运算其中negate是一元…

个人博客项目 - 测试报告

文章目录 一、项目背景二、测试报告功能测试1.编写测试用例2.登录测试3.编写文章测试4.查看文章测试5.删除文章测试7.注销登录测试 自动化测试性能测试1.VUG2.进行场景设计3.生成性能测试报告 总结 本文开始 一、项目背景 通过学习测试相关的知识&#xff0c;动手实践并测试一…

Linux文件

目录 一、基本概念 二、研究进程和被打开文件的关系 &#xff08;一&#xff09;w方式 &#xff08;二&#xff09;a方式 三、认识系统接口&#xff0c;操作文件 &#xff08;一&#xff09;认识文件描述符 &#xff08;二&#xff09;举例 &#xff08;三&#xff09;…

ML-Net:通过深度学习彻底改变多标签分类

一、说明 多标签分类是一项具有挑战性的机器学习任务&#xff0c;其中输入可以同时属于多个类。传统的多标签分类方法通常依赖于将问题转化为一系列二元分类任务或使用集成方法。然而&#xff0c;深度学习的出现开创了多标签分类的新时代&#xff0c;ML-Net 等模型突破了该领域…

【数据结构】动态顺序表详解

目录 1.顺序表的概念及结构 2.动态顺序表的实现 2.1创建新项目 2.2动态顺序表的创建 2.3接口的实现及测其功能 2.3.1初始化 2.3.2尾插 2.3.3头插 2.3.4尾删&头删 2.3.5打印&从任意位置插入 2.3.6删除任意位置的数据 2.3.7查找 2.3.8销毁顺序表 3.结语 He…

2018-2022年富时罗素 ESG评分数据

2018-2022年富时罗素 ESG评分数据 1、时间&#xff1a;2018-2022年 2、指标&#xff1a;证券代码、证券简称、富时罗素ESG评分、 3、说明&#xff1a; 富时罗素ESG评级体系评估了中国大陆、香港、欧洲以及美国等市场上1800家中国上市企业股票&#xff0c;评估了7200多种证券…

scss的高级用法——循环

周末愉快呀&#xff01;一起来学一点简单但非常有用的css小知识。 最近在一个项目中看到以下css class写法&#xff1a; 了解过tailwind css或者unocss的都知道&#xff0c;从命名就可以看出有以下样式&#xff1a; font-size: 30pxmargin-left: 5px;margin-top: 10px; 于是…

SpringBoot监听器解析

监听器模式介绍 监听器模式的要素 事件监听器广播器触发机制 SpringBoot监听器实现 系统事件 事件发送顺序 监听器注册 监听器注册和初始化器注册流程类似 监听器触发机制 获取监听器列表核心流程: 通用触发条件: 自定义监听器实现 实现方式1 实现监听器接口: Order(1) …

Docker Volume: 实现容器间数据共享与持久化的利器

文章目录 Docker Volume的作用Docker Volume与容器内数据的比较优势劣势 Docker Volume的创建和管理创建Docker Volume管理Docker Volume 演示Docker Volume的挂载Docker Volume的生命周期安全性考虑与Docker Volume应用场景Docker Volume与多容器协作容器迁移与Docker Volume未…

如何入驻抖音本地生活服务商,附上便捷流程!

抖音作为一款短视频社交媒体应用&#xff0c;已经成为全球范围内数以亿计的用户的首选。而在普及的同时&#xff0c;短视频领域也在不断拓展自身的业务领域&#xff0c;其中之一就是本地生活服务。继抖音本地生活服务之后支付宝、视频号也相继开展了本地生活服务&#xff0c;用…

用css实现原生form中radio单选框和input输入框的hover样式以及聚焦focus的样式

一.问题描述&#xff1a;用css实现原生form中radio单选框和input的hover已经focus的样式 在实际的开发中&#xff0c;一般公司ui都会给效果图&#xff0c;比如单选按钮radio样式&#xff0c;input输入框hover的时候样式&#xff0c;以及focus的时候样式&#xff0c;等等&#…

【并发编程】ThreadLocal详解与原理

&#x1f4eb;作者简介&#xff1a;小明Java问道之路&#xff0c;2022年度博客之星全国TOP3&#xff0c;专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化&#xff0c;文章内容兼具广度、深度、大厂技术方案&#xff0c;对待技术喜欢推理加验证&#xff0c;就职于…

java项目之社区互助平台(ssm+vue)

项目简介 社区互助平台实现了以下功能&#xff1a; 1、一般用户的功能及权限 所谓一般用户就是指还没有注册的过客,他们可以浏览主页面上的信息。但如果有中意的社区互助信息时&#xff0c;要登录注册&#xff0c;只有注册成功才有的权限。2、管理员的功能及权限 用户信息的添…

[C/C++] 数据结构 LeetCode:用队列实现栈

题目描述: 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 实现 MyStack 类&#xff1a; void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元…

图像分割方法

常见的图像分割方法有以下几种&#xff1a; 1.基于阈值的分割方法 灰度阈值分割法是一种最常用的并行区域技术&#xff0c;它是图像分割中应用数量最多的一类。阈值分割方法实际上是输入图像f到输出图像g的如下变换&#xff1a; 其中&#xff0c;T为阈值&#xff1b;对于物体的…