Python中的for循环详情
作者:尤而小屋 发布时间:2022-04-11 04:30:54
目录
1、可迭代对象
1.1什么是可迭代对象
1.2怎么判断
2、字符串的for循环
3、列表的for循环
4、元组的for循环
5、字典的for循环
5.1keys()
5.2 values()
5.3 items()
6、range函数的for循环
6.1基础案例
6.2找出100以内能够被5整除的数
6.3高斯求和
7、多个for语句
8、列表推导式
9、for-else
10、实现三角阵列
11、99乘法表
for语句实际上解决的是循环问题。在很多的高级语言中都有for循环(for loop)。
for语句其实是编程语言中针对可迭代对象的语句,它的主要作用是允许代码被重复执行。看一段来自 * 的介绍:
In computer science, a for-loop (or simply for loop) is a control flow statement for specifying iteration, which allows code to be executed repeatedly。(作用:介绍了for循环是什么?)
A for-loop has two parts: a header specifying the iteration, and a body which is executed once per iteration. (for循环是什么构成的?)
是什么:在计算科学中,是针对特殊迭代对象的控制流语句,能够重复执行
怎么构成:一个头部(是可迭代对象)+ 每个对象的执行
1、可迭代对象
1.1什么是可迭代对象
可迭代对象(Iteratable Object
) 是能够一次返回其中一个成员的对象,比如我们常用的字符串、列表、元组、集合、字典等等之类的对象都属于可迭代对象,获取到这些对象我们就可以用for循环来进行操作。
简单来理解,任何你可以循环遍历的对象都是可迭代对象。
1.2怎么判断
如何判断一个Python
对象是不是可迭代对象?通常是使用 isinstance()函数来判断对象是否是可迭代对象
from collections import Iterable小结:在
Python
常见的数据对象中,只有数字是不可迭代的,字符串、元组、列表、字典等都是可迭代的2、字符串的for循环
一次遍历打印字符串中的每个元素
for i in "python":
print(i)
输出:
p
y
t
h
o
n
在看另一个例子:
for i in "abcdefg":
print(i)
输出:
a
b
c
d
e
f
g
3、列表的for循环
不管是单层列表还是多层的嵌套列表,我们都可以遍历打印出来:
# 单层列表
a = ["小明","小红","小张","小王"]
for i in a:
print(i) # 打印列表中的每个元素
小明
小红
小张
小王
# 嵌套列表
b = ["小明","小红","小张","小王",[19,20,18,23]]
for i in b:
print(i)
小明
小红
小张
小王[19, 20, 18, 23]
上面的例子中最后一个元素当做整体被打印出来,如果也想分开打印呢?
def qiantao(x): # 定义一个函数
for each in x: # 遍历每个原始列表中的每个元素
if isinstance(each, list): # 判断每个元素是否是列表:isintance
qiantao(each) # 如果是列表,递归执行函数qiantao()
else:
print(each) # 如果不是列表,就直接打印该元素
b = ["小明","小红","小张","小王",[19,20,18,23]]
# 调用函数,传入列表b
qiantao(b)
小明
小红
小张
小王
19
20
18
23
4、元组的for循环
元组tuple的循环和列表是类似的:
t = ("小明","小红","小王")
for i in t:
print(i)
小明
小红
小王
5、字典的for循环
我们使用keys()
、values()
、items()
,我们可以分别遍历字典的键、值和键值对。需要注意的是:遍历字典默认是遍历字典的键,先定义一个字典:
d = {"name":"Peter","age":20,"sex":"male","address":"china"}
5.1keys()
遍历字典的键;
for i in d.keys(): # 遍历字典的键
print(i)
name
age
sex
address
for i in d: # 默认就是遍历键的取值
print(i)
name
age
sex
address
5.2 values()
遍历字典的值:
for i in d.values(): # 遍历字典的值
print(i)
Peter
20
male
china
5.3 items()
同时遍历字典的键和值
for i in d.items(): # 遍历字典的值
print(i)
('name', 'Peter')
('age', 20)
('sex', 'male')
('address', 'china')
分别取出字典的键和值:
for k,v in d.items():
print(k + "--->" + str(v))
name--->Peter
age--->20
sex--->male
address--->china
6、range函数的for循环
range
函数是 Python
内置函数,用于生成一系列连续整数,多用于 for 循环中。
range(start,stop,step)
start
:包含start,默认为0,可不写则默认为0stop
:不包含stop,必须写步长
step
可正可负,默认是1,不能为0
6.1基础案例
range(10) # 生成的是可迭代对象
range(0, 10)
默认开头是0
range(0,10)
range(0, 10)
指定开头为1
range(1,10)
range(1, 10)
下面是将结果展开成列表:
list(range(10)) # 不包含10(尾部)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
指定步长为2:
list(range(0,10,2)) # 不包含10,步长是2
[0, 2, 4, 6, 8]
总结:range
函数是包含头部不包含尾部
for i in range(10):
print(i)
0
1
2
3
4
5
6
7
8
9
6.2找出100以内能够被5整除的数
for i in range(101): # 不包含101,0-100
if i % 5 == 0: # %表示求余数:余数为0则表示整除
print(i,end="、")
0、5、10、15、20、25、30、35、40、45、50、55、60、65、70、75、80、85、90、95、100、
6.3高斯求和
求出1到100的所有数之和
sum = 0
for i in range(1,101):
sum = sum + i # 每循环一次,sum就是这个数字
sum
5050
求出100以内奇数的和:
sum = 0
# 步长为2,从1开始:1,3,5,7...
for i in range(1,101,2):
sum = sum + i
sum
2500
求出100以内偶数的和:
sum = 0
# 步长为2,从2开始:2,4,6,8...
for i in range(2,101,2):
sum = sum + i
sum
2550
7、多个for语句
for语句中还可以再使用for语句:
for i in ["python","java","html"]:
for j in i:
print(i.upper(),j) # upper():将字母变成大写
PYTHON p
PYTHON y
PYTHON t
PYTHON h
PYTHON o
PYTHON n
JAVA j
JAVA a
JAVA v
JAVA a
HTML h
HTML t
HTML m
HTML l
for i in [4,5,6]:
for j in [1,2,3]:
print(i*j) # 实现任意两个数的乘法
4 # 4*1
8 # 4*2
12 # 4*3
5 # 5*1
10 # 5*2
15 # 5*3
6 # 6*1
12 # 6*2
18 # 6*3
8、列表推导式
(1)上面我们提到能够被5整除的数:使用for循环和if来解决
five = [] # 定义空列表
for i in range(101): # 不包含101,0-100
if i % 5 == 0: # %表示求余数:余数为0则表示整除
five.append(i) # 添加到列表中
five
[0,
5,
10,
15,
20,
25,
30,
35,
40,
45,
50,
55,
60,
65,
70,
75,
80,
85,
90,
95,
100]
(2)使用列表推导式如何实现呢?
[x for x in range(101) if x % 5 == 0]
[0,
5,
10,
15,
20,
25,
30,
35,
40,
45,
50,
55,
60,
65,
70,
75,
80,
85,
90,
95,
100]
9、for-else
也许你听过if-else
,但是听到for-else
语句吗?这也算是Python
中的一个冷门知识点
for i in range(5):
print(i)
else:
print("结束")
0
1
2
3
4
结束
也就是说:for
语句结束了依然会执行else
的语句
for i in []:
print(i)
else:
print("结束")
结束
下面的例子中,当i除以3的余数是2的时候回跳出并终止整个for
循环,后面的else
就不会执行了
for i in range(10):
print(i)
if i % 3 == 2:
break
else:
print("结束")
0
1
2
10、实现三角阵列
for i in range(1,11):
for k in range(1,i):
print(k, end=" ")
print("\n")
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
如果我们想要倒过来,该如何实现呢?
for i in range(10,0,-1):
for k in range(1,i):
print(k, end=" ")
print("\n")
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7
1 2 3 4 5 6
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
11、99乘法表
下面举个例子来说明如何实现99乘法表
for i in range(1,10):
for j in range(1,i+1): # 为了保证有4*4,也就是同个数字相乘的等式,需要让i出现,使用i+1
print('{}x{}={}'.format(j, i, i*j), end=" ") # end的结束符号用空格
print("\n")
来源:https://www.tuicool.com/articles/BBVRnqZ
猜你喜欢
- 异常的参数一个异常可以带上参数,可作为输出的异常信息参数。你可以通过except语句来捕获异常的参数,如下所示:变量接收的异常值通常包含在异
- 家里没网络,实在无聊,玩游戏都没味道,只好玩CSS。这个东西实在没什么技术含量在里面,纯属打发时间。简单说明:一张图片放在底层,
- python封装利用begin end执行多条sql因为业务需求,优化模型运行时间。考虑到sql语句每一次执行都要建立连接,查询,获取数据耗
- 使用 pdb 进行调试pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单
- sysdate+(5/24/60/60) 在系统时间基础上延迟5秒 sysdate+5/24/60 在系统时间基础上延迟5分钟 sysdat
- 之前写了一个matlab的,越用越觉得麻烦,如果不同数据集要改类别数目,而且运行速度慢。所以重新写了一个Python的,直接读取xml文件夹
- 问题:如果一个网站拥有两个域名:domain1.com和domain2.com。在网站运营前期,主推domain1.com,但发展到中期,由
- 思路整理:1、进入心灵鸡汤网页,使用python获取心灵鸡汤内容2、登陆微信,找到需要发送的朋友3、发送获取的内容1、获取心灵鸡汤的内容如下
- 拓扑排序几乎在所有的项目,甚至日常生活,待完成的不同任务之间通常都会存在着某些依赖关系,这些依赖关系会为它们的执行顺序行程表部分约束。对于这
- 故事的开始:.count()假设你有一个Notification Model类,保存的主要是所有的站内通知:class Notificati
- 本文实例讲述了php实现的支持断点续传的文件下载类及其用法,是非常实用的技巧。分享给大家供大家参考。具体方法如下:通常来说,php支持断点续
- 在风起云涌的互联网浪潮中,产品迭代的速度越来越快。随着用户需求的激增,也不断带来了对设计师能力要求的提高。初入交互设计领域几年来,明显发现可
- 需求:用SQL语句随机从数据库中随机取N条数据。以前不太清楚SQL语句可以直接随机取数据今天查了一下,发现有两个随机函数: newid()
- 导言到目前为止的讨论编辑DataList的教程里,没有包含任何验证用户的输入,即使是用户非法输入— 遗漏了product的name或者负的p
- 缩进Python最具特色的是用缩进来标明成块的代码。我下面以if选择结构来举例。if后面跟随条件,如果条件成立,则执行归属于if的一个代码块
- function geturl($url) { $ch = curl_init(); $timeout = 5; curl_setopt($
- 笔者在网站开发中,采用PHP4.0+MySQL3.23.38建立了多种应用。下面,以一个简单的聊天室设计为例,介绍PHP+MySQL在网页开
- 今天分享一下Django实现的简单的文件上传的小例子。步骤 •创建Django项目,创建Django应用 •设计模型&n
- 前言作为Web开发人员,在 Web浏览器中存储数据以改善用户体验和提升Web应用程序性能是非常常见的。在大多数情况下,可供我们使用就是Loc
- 本文向大家分享23种JavaScript提高执行效率的小技巧、最佳实践等非常实用的内容。当然JavaScript的实用技巧不止这些,还有很多