Python中常见的循环有两类:

  • for
  • while

for 循环

list

list是最常见的可迭代对象,其他可迭代的对象例如 dict,set,file lines,string等

for i in set((1,2,3)):
print(i)

输出:

1

2

3

import string

list_num = list(string.digits)

for i in list_num:
# 输出偶数
if int(i)%2 == 0:
print(i)

输出:

0

2

4

6

8

range

range 有头无尾,e.g. range(1,3) 实际得到的序列是(1,2)

for i in range(3):
print(i)

输出:

0

1

2

for i in range(1,9):
# 输出偶数
if int(i)%2 == 0:
print(i)

输出:

2

4

6

8

enumerate

enumerate为循环的list加上index,这个index是编号是从0开始的

list_val = [1,2,3,5,8]
for idx,val in enumerate(list_val):
print(idx,val)

输出:

0 1

1 2

2 3

3 5

4 8

zip

同时遍历两个以上的list,并按顺序打包

list_1 = string.digits[:3]
list_2 = string.ascii_lowercase[:3]
list_3 = string.ascii_uppercase[:3] print(list_1,list_2,list_3)

输出:

012 abc ABC

list_merge_1 = list(zip(list_1,list_2,list_3))
print(list_merge_1) list_merge_2 = [i+j+k for (i,j,k) in zip(list_1,list_2,list_3)]
print(list_merge_2)

输出:

[('0', 'a', 'A'), ('1', 'b', 'B'), ('2', 'c', 'C')]

['0aA', '1bB', '2cC']

# 元素组合
list_merge_3 = [i+j for i in list('123') for j in list('ABC')] print(list_merge_3)

输出:

['1A', '1B', '1C', '2A', '2B', '2C', '3A', '3B', '3C']

while 循环

while相当于for和if的结合体。

while不一定执行的是循环,有时候功能和if差不多,这个时候while的意义相当于如果条件为真,那就执行如下操作

while更多扮演for和if联合的角色,相当于重复执行如下操作,知道判断条件(会不断变化)不再成立为止

for和while的区别

  • for循环中迭代的条件是遍历一个序列,这个序列是有限或者确定的。
  • while循环则是基于条件判断,而没有明确的迭代序列,所以while循环可以用来探索序列(先试着执行,有问题咱就退出),比如爬虫的时候你不知道网页page_index到哪结束;
  • for循环不会“重复”执行完全一样的操作,除非迭代的list对象是一样的,而while是可以重复执行相同操作的,这种特定在需要“重试”的场景中会经常用到。e.g.网页返回失败的时候可以重试几次,登陆失败的时候可以重试几次。

while相当于if时

# 需要break的配合
x = 2 while(x>1):
print('这个值大于1') break

输出:

这个值大于1

while充当for和if的混合体

# 需要自增的index来配合

idx = 1

while(idx < 5):
print(idx) idx += 1

输出:

1

2

3

4

泛循环

如果将循环理解为按照顺序遍历一个序列。

除了用for、while还可以用其他函数达到“遍历”的效果。

列表解析

本质还是循环,常见的for循环在语句上的表现是多行,而列表解析是一行

# 筛选奇数
num_odd = [i for i in range(1,10) if i%2==1] print(num_odd)

输出:

[1, 3, 5, 7, 9]

map

对序列中多个对象执行相同操作

list(map(lambda x:x**2,range(4)))

输出:

[0, 1, 4, 9]

list_words = ['life','is','short','use','python']

list(map(lambda x:len(x),list_words))

输出:

[4, 2, 5, 3, 6]

迭代器

变种的for循环

按顺序将序列值一次“弹出”,同时被”弹出“的值移出序列

序列为空时,报错StopIteration

vals_iter = iter(list(range(3)))

next(vals_iter)

输出:

0

迭代器可以如上述举例一样是”有穷“的迭代,也可以是”无穷“的,比如自增序列(index为自然顺序)

# 定义一个迭代器
class test_iter:
def __init__(self):
self.a = 1
self.b = 1 def __iter__(self):
return self def __next__(self):
x = self.a
self.a, self.b = self.b, self.a+self.b
return x
fb = test_iter()

for i in range(6):
print(next(fb))

输出:

1

1

2

3

5

8

生成器

生成器和迭代器的对比

相同点:

  • 从执行的结果看都是基于一定的规则”迭代“产生序列(无论是“无穷”系列还是“有穷”系列)
  • 都支持iter,next方法
  • “弹出”数值后,会清除已“弹出”的数值

不同点:

  • 生成器属于迭代器中的一种
  • 在定义的时候,定义生成器就和定义函数一样自然(同时会自动产生iter和next方法),而定义迭代器则主要通过iter,next来定义序列;
  • 更多参考1
  • 更多参考2
def num_even(x):
while(x>0):
if x%2 == 0:
yield x
x -= 1
x = num_even(9)

for i in x:
print(i)

输出:

8

6

4

2

循环的跳出和继续

break 是跳出循环,也就是不再执行该循环的操作,如果是嵌套循环,那么上层的循环也终止

continue 跳过当前的操作,进入下一轮循环,对上层的循环没有影响

pass 接着执行,用得很少,此处不讲

break,continue之后的语句也不会执行,所以一定要注意这两个关键字放置的位置

单层循环

for i in range(5):
print(i) if i == 2:
break # 当i=2时,循环结束
print('不会出现')

输出:

0

1

2

for i in range(5):

    if i == 2:
continue # 跳过2这个值
print('不会出现')
print(i)

输出:

0

1

3

4

i = 1
while(i<5):
print(i)
break # 执行一次就结束
print('不会出现')

输出:

1

i = 1
while(i<5):
print(i) i += 1
if i == 2:
continue
print('不会出现')

输出:

1

2

3

4

while中用continue要小心啊,比如如下代码是会一直执行的

i = 1
while(i<5):
print(i) if i == 2:
continue
print('不会出现') i += 1

嵌套循环

for i in range(3):
for j in list('abc'):
if j == 'b':
break # 到b的时候就停止了
print(i,j)

输出:

0 a

1 a

2 a

for i in range(3):
for j in list('abc'):
if i == 1 or j=='b':
continue
print(i,j) #不会出现带1和b的输出值

输出:

0 a

0 c

2 a

2 c

Python基础 | 关于“循环”那些事的更多相关文章

  1. 第五篇:python基础之循环结构以及列表

    python基础之循环结构以及列表   python基础之编译器选择,循环结构,列表 本节内容 python IDE的选择 字符串的格式化输出 数据类型 循环结构 列表 简单购物车的编写 1.pyth ...

  2. Python 基础 while 循环

    Python 基础 while 循环 while 循环 在生活中,我们遇到过循环的事情吧?比如循环听歌.在程序中,也是存才的,这就是流程控制语句 while 基本循环 while 条件: # 循环体 ...

  3. python基础之循环结构以及列表

    python基础之编译器选择,循环结构,列表 本节内容 python IDE的选择 字符串的格式化输出 数据类型 循环结构 列表 简单购物车的编写 1.python IDE的选择 IDE的全称叫做集成 ...

  4. python基础(六)循环

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 循环用于重复执行一些程序块.从上一讲的选择结构,我们已经看到了如何用缩进来表示程序 ...

  5. python基础之循环

    一.while循环 如果条件成立(true),重复执行相同操作,条件不符合,跳出循环 while   循环条件: 循环操作 (1)while循环示例 例:输入王晓明5门课程的考试成绩,计算平均成绩 i ...

  6. python基础之循环语句

    一.if条件语句: 语法: 1.if单分支(单重条件判断) if expression: expr_true_suite 注释:expession为真执行代码expr_true_suite if单分支 ...

  7. python基础之循环与迭代器

    循环 python 循环语句有for循环和while循环. while循环while循环语法 while 判断条件: 语句 #while循环示例 i = 0 while i < 10: i += ...

  8. Python基础->for循环、字符串以及元组

    python流程控制>for循环.字符串以及元组 学习有关序列的思想.序列:一组有顺序的东西.所有的序列都是由元素组成的,序列中的元素位置是从0开始编号的,最后一个元素的位置是它长度减一. fo ...

  9. Python 基础06 循环

    循环用于重复执行一些程序块.从上一讲的选择结构,我们已经看到了如何用缩进来表示程序块的隶属关系. 循环也会用到类似的写法. for 循环 for 循环需要预先设定好循环的次数(n) 然后执行隶属于fo ...

随机推荐

  1. 敏捷开发方法(一) Scrum

    Scrum团队:由产品负责人.开发团队和Scrum Master组成. 是跨职能的自组织团队 自组织团队自己选择如何最好地完成工作,而不是由团队外的人指导 跨职能团队拥有完成工作所需要的全部技能,不需 ...

  2. CHI 2015大会:着眼于更加个性化的人机交互

    2015大会:着眼于更加个性化的人机交互" title="CHI 2015大会:着眼于更加个性化的人机交互"> 本周,人机交互领域的顶级盛会--2015年ACM C ...

  3. <SDOI2009>学校食堂

    我. 调了快一天 因为一个位置错误的感叹号 :-) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 狗dp #include<cstdio> #include<cstr ...

  4. MicrosoftOfficeProfessionalPlus2013傻瓜式激活工具

    用微软的office系列,总是提示需要输入秘钥,直接找个破解软件破解算了. 破解软件地址:http://www.3322.cc/soft/10037.html 1.下载解压: 2.点击office系列 ...

  5. staruml百度网盘下载

    分享staruml官方百度网盘下载 下载时间:2019年9月4日 21:27:37  StarUML(简称SU),是一种创建UML类图,生成类图和其他类型的统一建模语言(UML)图表的工具.StarU ...

  6. 从一道网易面试题浅谈 Tagged Pointer - darcy_tang 的博客

    前言 这篇博客九月就想写了,因为赶项目拖了到现在,抓住17年尾巴写吧~ 正文 上次看了一篇 <从一道网易面试题浅谈OC线程安全> 的博客,主要内容是: 作者去网易面试,面试官出了一道面试题 ...

  7. paxos算法学习总结

    核心思想 分布式系统架构下如何让整体尽快达成一致观点,也就是多个不同观点收敛到一个观点的过程. 难点 可能会发生少数节点故障,但绝不是大面积故障,不然系统也没法正常工作. 由于存在单点故障,因此不可能 ...

  8. TableViewComponent v2

    Unity UGUI 自带的 ScrollView 控件不支持复用滚动内容,在数量大的情况下,界面容易卡顿 借鉴其他游戏控件,写了个可复用的滚动组件,扩展.优化了ScrollView TableVie ...

  9. ES6中Map数据结构学习笔记

    很多东西就是要细细的品读然后做点读书笔记,心理才会踏实- Javascript对象本质上就是键值对的集合(Hash结构),但是键只能是字符串,这有一定的限制. 1234 var d = {}var e ...

  10. Python计算给定日期的周内的某一天

    先理一下思路:1.weekday会根据某个日期返回0到6的一个数字来表示星期几对吧,0==星期一我们来列一个表: [0,1,2,3,4,5,6] 2.知道了星期几之后,你可以计算出那一周相对于这个0到 ...