python基础教程八(循环1)

1. while循环

为避免多次重复的代码,我们会用到循环
while (condition):
执行语句

while循环的结构非常简单只要条件满足就一直循环直到,条件不满足为止。
例子如下:

x=1
while x<=100:
	print(x)
	x+=1

结果就是最简单的输出1-100的数字
在这里插入图片描述
while循环适合那种没有确定次数,变化规律不是很明显,只是知道何时应该停止的循环。如果知道具体次数那就更适合下面这种循环for

2. for循环

while语句非常灵活,可在条件为真时反复执行代码块。,但有时你可能想根据需要进行定制。一种这样的需求是序列(或其他可迭代对象)中每个元素执行的代码块

注意:基本上可迭代对象是可使用for循环进行遍历的对象。

为此,可使用for语句:

>>> words=['this','is','an','ex','parrot']
>>> for word in words:
...     print(word)
...
this
is
an
ex
parrot

1. range

鉴于迭代(也就是遍历)特定范围的内的数是一种常见的任务,python提供了一个创建范围的内置函数range

>>> range(0,10)
range(0, 10)
>>> list(range(0,10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

范围类似于切片。它们包含起始位置(这里为0)但不包含结束位置(这里为10)。在很多情况下,你都希望起始为0.实际上,如果只提供一个位置,将把这个位置视为结束为止,并假定起始位置为0

>>> range(0,10)
range(0, 10)

下面的程序打印数1~100:

for i in range(1,101):
	print(i)

注意,相比前面的while循环,这些代码紧凑的多。

练习用for循环画正五角星

#王八默认朝右边

from turtle import *
lt(72)
for i in range(1,6):
	fd(100)
	rt(144)



input("图已经画完请按回车关闭")

在这里插入图片描述

2. 迭代字典

要遍历字典的所有关键字,可像遍历序列那样使用普通的for语句
d={'x':1,'y':2,'z':3}
for key in d:
    print("{}'s value={}".format(key,d[key]))

====================== RESTART: E:\python\python练习\字典遍历.py =====================
x's value=1
y's value=2
z's value=3


也可以使用keys等字典方法来获取所有的键。如果只对值感兴趣,可以使用d.values.
你可能记得,d.items以元组的方式返回键值对。这是for循环的有点之一,可在其中使用序列解包
a={1:2,3:4}
for i,j in a.items():
    print(i,j)


输出为
1 2
3 4

字典元素的排序顺序是不确定的。如果顺序很重要,可将键或值存储在一个列表中并对列表排序,再进行迭代。

3. 一些迭代工具

1. 并行迭代

有时候,你想同时迭代俩个序列。假设有下面俩个列表:
names=[‘zhangsan’,‘lisi’,‘damon’,‘beth’]
ages=[12,12,23,11]
如果打印名字和对应的年龄,可以像下面这样做:

for i in range(len(name)):
	print(name[i],age[i])

i是作为循环索引的标准名称。一个很有用的并行迭代工具是内置函数zip它将俩个序列缝合起来,并返回一个由元组组成的序列。返回值是一个适合的迭代对象,可使用list将其转换为列表

names=['zhangsan','lisi','damon','beth']
ages=[12,12,23,11]
print(list(zip(names,ages)))



输出为:
[('zhangsan', 12), ('lisi', 12), ('damon', 23), ('beth', 11)]

缝合后,可在循环元组解包。

names=['zhangsan','lisi','damon','beth']
ages=[12,12,23,11]
for name,age in zip(names,ages):
    print(name,age)


输出为:

zhangsan 12
lisi 12
damon 23
beth 11

函数zip可以用于缝合任意的序列。需要指出的是,当序列的长度不同时,函数zip在最短的序列用完后停止缝合。

2. 迭代时获取索引

在有些情况下,你需要知道迭代序列的同时获取当前对象的索引。例如,你可能想替换一个字符串列表所有包含子串‘xxx’ 的字符串,当然,完成这种任务的方法有很多,但这里假设要这样做:

for string in strings:
	if 'xxx' in string:
		index=strings.index(string)
		string[index]='[censored]'
	

这可行,替换前的搜索好像没有必要。另外返回的索引可能不对(即返回的是该字符串首次出现处的索引)。另一种方案是使用内置函数enumerate

s=['123','2312','23213','xxxew']
for index,string in enumerate(s):
    if 'xxx' in string:
        s[index]='hahah'
print(s)
input()

3. 反向迭代和排序后再迭代

来看另外俩个很有用的函数,reversed和sorted。曾经在列表那里浅显的说过他们,但可用于任何序列和可迭代的对象,且不就地修改对象,而是排列反转后和排序后的版本。

>>> sorted([4,3,6,8,3])
[3, 3, 4, 6, 8]
>>> sorted('hello,world')
[',', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
>>>
>>> list(reversed('hello,world'))
['d', 'l', 'r', 'o', 'w', ',', 'o', 'l', 'l', 'e', 'h']
>>> ''.join(reversed('hello world'))
'dlrow olleh'
>>>

请注意,sorted返回一个列表,而reversed像zip那样返回一个更神秘的迭代对象,你无需关心到底是什么,只管在for循环或join方法等中使用它,不会有任何问题。只是你不能对它执行索引或切片操作,也不能直接对它调用列表方法。要执行这些操作,可先使用list对返回对象进行转换

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

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

相关文章

MySQL常用连接工具

Navicat 缺点&#xff1a;老版本不支持mysql8数据库连接&#xff0c;而且样式没有新版的好看 优点&#xff1a;新版支持多种数据连接&#xff0c;而且样式比较好看 HeidiSQL 官网&#xff1a;Download HeidiSQL 有一个非常好的优点就是不用输入表名称&#xff1a;双击就会自…

TS 36.211 V12.0.0-上行(4)-参考信号

本文的内容主要涉及TS 36.211&#xff0c;版本是C00&#xff0c;也就是V12.0.0。 本文具体内容为该协议的<Uplink>一章中的5.5节。

OS_lab——分页机制与内存管理

认真阅读章节资料&#xff0c;掌握什么是分页机制 调试代码&#xff0c;掌握分页机制基本方法与思路 代码pmtest6.asm中&#xff0c;212行~237行&#xff0c;设置断点调试这几个循环&#xff0c;分析究竟在这里做了什么 掌握PDE&#xff0c;PTE的计算方法 动手画一画这个映…

C# OpenCvSharp DNN 部署yoloX

目录 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN 部署yoloX 效果 模型信息 Inputs ------------------------- name&#xff1a;images tensor&#xff1a;Float[1, 3, 640, 640] --------------------------------------------------------------- Outputs ---…

Showroom Environment gallery

展示厅环境-画廊 PBR包中的所有纹理。它们适用于URP和内建。在标准状态下,所有内容都是在URP下配置的。如果你有整个场景“粉红色”,请更改渲染设置。 简单的画廊内部,配有用于照片和图片的画布。非常适合您的虚拟画廊或展厅。此套餐包含一个展厅,您可以在其中展示您的作品…

python总结-生成器与迭代器

生成器与迭代器 生成器生成器定义为什么要有生成器创建生成器的方式一(生成器表达式) 创建生成器的方式二(生成器函数)生成器函数的工作原理总结 迭代器概念可迭代对象和迭代器区别for循环的本质创建一个迭代器 动态添加属性和方法运行过程中给对象、类添加属性和方法types.Met…

我想从Spring Cloud Alibaba开始聊聊架构的本质?

另外我的新书RocketMQ消息中间件实战派上下册&#xff0c;在京东已经上架啦&#xff0c;目前都是5折&#xff0c;非常的实惠。 https://item.jd.com/14337086.html​编辑https://item.jd.com/14337086.html “RocketMQ消息中间件实战派上下册”是我既“Spring Cloud Alibaba微…

【Helm 及 Chart 快速入门】01、Helm 基本概念及仓库管理

目录 一、为何需要 Helm 二、什么是 Helm 三、Helm 核⼼概念 四、Helm 架构 五、Helm 安装 六、Helm 仓库管理 6.1 查看仓库 6.2 添加仓库 6.3 更新仓库 6.4 删除仓库 一、为何需要 Helm 在早期的 Linux 系统中&#xff0c;维护和安装软件包是⼀件极其麻烦的…

【赠书第16期】码上行动:用ChatGPT学会Python编程

文章目录 前言 1 ChatGPT简介 2 Python编程简介 3 使用ChatGPT学习Python编程 4 如何使用ChatGPT学习Python编程 5 推荐图书 6 粉丝福利 前言 随着人工智能技术的不断发展&#xff0c;聊天机器人已经成为我们日常生活和工作中不可或缺的一部分。其中&#xff0c;ChatGP…

Android系统的启动流程

Android系统启动流程大致可以概括为以下的几个步骤&#xff1a; 电源启动BootLoader启动Linux内核启动init进程启动Zygote进程启动SystemServer进程启动Launcher启动 关键的进程及其作用&#xff1a; init进程 init进程是Android系统中用户空间的第一个进程&#xff0c;进程号…

leetcode 每日一题 2023年12月28日 收集巧克力

题目 2735. 收集巧克力 给你一个长度为 n、下标从 0 开始的整数数组 nums&#xff0c;nums[i] 表示收集位于下标 i 处的巧克力成本。每个巧克力都对应一个不同的类型&#xff0c;最初&#xff0c;位于下标 i 的巧克力就对应第 i 个类型。 在一步操作中&#xff0c;你可以用成…

每个程序员都该学习的5种开发语言

我曾在某处读到过&#xff08;可能在《代码大全》&#xff0c;但我不敢确定&#xff09;&#xff0c;程序员应该每年学习一门新的编程语言。但如果做不到&#xff0c;我建议&#xff0c;你至少学习以下5种开发语言&#xff0c;以便你在职业生涯有很好的表现。 每个公司都喜爱精…

【数据结构】数据结构中应用题大全(完结)

自己在学习过程中总结了DS中几乎所有的应用题&#xff0c;可以用于速通期末考/考研/各种考试。很多方法来源于B站大佬&#xff0c;底层原理本文不做过多介绍&#xff0c;建议自己研究。例题大部分选自紫皮严书。pdf版在主页资源 一、递归时间/空间分析 1.时间复杂度的分析 设…

润和软件HopeStage与永中Office完成产品兼容性互认证

近日&#xff0c;江苏润和软件股份有限公司&#xff08;以下简称“润和软件”&#xff09;HopeStage 操作系统与永中软件股份有限公司&#xff08;以下简称“永中软件”&#xff09;永中Office办公软件完成产品兼容性测试。 测试结果表明&#xff1a;企业级通用操作系统HopeSta…

2023量子科技十大人物(团队) | 光子盒年度系列

今年&#xff0c;是量子科学与技术的又一个丰收年&#xff0c;学术研究团体和科技公司纷纷庆祝在量子计算、量子通信和量子计量学以及基础量子科学方面取得的重大成就。面对如此多令人兴奋的进展&#xff0c;我们不能不为这些进展庆祝——而所有这些的一切&#xff0c;都离不开…

如何编写高效的正则表达式?

正则表达式&#xff08;Regular Expression&#xff0c;简称regex&#xff09;是一种强大的文本处理技术&#xff0c;广泛应用于各种编程语言和工具中。本文将从多个方面介绍正则表达式的原理、应用和实践&#xff0c;帮助你掌握这一关键技术。 正则可视化 | 一个覆盖广泛主题…

为什么网络安全从业者都考CISP-PTE

网络an全从业者考取CISP-PTE证书的原因&#x1f447; 1️⃣高度认可 &#x1f48e;CISP-PTE证书是中国信息an全测评中心认证颁发&#xff0c;是国家对信息an全人员资质的zui高认可&#xff0c;具有很高的含金量。 对于网络an全从业者来说&#xff0c;可以证明自己具备规划测试方…

【python、pytorch】

什么是Pytorch Pytorch是一个基于Numpy的科学计算包&#xff0c;向它的使用者提供了两大功能。作为Numpy的替代者&#xff0c;向用户提供使用GPU强大功能的能力。做为一款深度学习的平台&#xff0c;向用户提供最大的灵活性和速度。 基本元素操作 Tenors张量&#xff1a;张量…

企业如何选择可靠的文件传输软件?曝光6招内行方法

随着企业内部对于文件传输需求的增加&#xff0c;原先传统的传输方式逐渐不再适合传输要求&#xff0c;无论是内部协作还是外部合作&#xff0c;企业都需要高效、安全、稳定的文件传输软件来支持业务的顺利进行。 然而&#xff0c;市面上的文件传输软件众多&#xff0c;不同的软…

redis数据结构源码分析——string

前面的文章大体讲解了redis的几种数据类型&#xff0c;针对设计表巧妙的数据类型&#xff0c;后续会出几篇文章单独讲解下&#xff0c;那么本篇文章针对string的源码进行讲解。 文章目录 字符串的三种编码sds结构sds的设计思想和优势sds API解析sdsnewlen&#xff08;创建字符…