for循环又称为遍历循环,从名字就可以知道,它用于对象的遍历

语法格式:

会从可迭代对象对象中依次拿出值来赋值给变量,变量的值每次都会被修改

for 变量1[变量2...] in 可迭代对象:
代码块

s = '123'
for n in s:
print(n)
# 1
# 2
# 3

range方法

格式:

 range(stop) -> range object
range(start, stop[, step]) -> range object

返回一个对象,从start位置数字开始,到stop-1的位置数字结束,可以指定步长

示例:

for i in range(3):
# print(i)
# 0
# 1
# 2 for i in range(3, 8, 3):
print(i)
# 3
# 6

range方法经常和 for 组合使用,可以用来通过索引遍历序列类型

s = 'abc'
l = [1,3,4]
t = ('x','y',['name','sex']) for i in range(len(s)):
print(s[i])
# a
# b
# c for i in range(len(l)):
print(l[i])
# 1
# 3
# 4 for i in range(len(t)):
print(t[i])
# x
# y
# ['name', 'sex']

遍历字典

字典是没有索引的,因此只能使用for对其直接遍历

d = {'name': 'bone','age':15}
for k in d:
print(k)
# name
# age

直接遍历得到的是字典的key,可以通过key取值

d = {'name': 'bone','age':15}
for k in d:
print(d[k])
# bone
# 15

可以结合items方法,items得到字段key和values的元组形式值,使用两个变量来接收key和value

d = {'name': 'bone','age':15}
for k,v in d.items():
print(k,v)
# name bone
# age 15

遍历集合:

集合不是序列类型,无法通过索引遍历取值,直接使用for遍历它

s = {1,'a',5}
for i in s:
print(i)
# 1
# a
# 5

break和countinue

for 中使用break和countinue和while是一样的

  • break:立即终止循环
  • continue:结果当前循环,继续下一个循环
s = '12345678'
for i in s:
if i == '3':
break
print(i)
# 1
# 2 for i in range(8):
if i%2 != 0:
continue
else:
print(i)
# 0
# 2
# 4
# 6

for… else结构

和while循环一样,for也可以和else组合使用,只有for循环正常结束才会运行for

s = '1234'
print('准备开始循环:')
for i in s:
if i == '3':
break
print(i)
else:
print('循环正常结束')
print('循环执行完毕')
# 准备开始循环:
# 1
# 2
# 循环执行完毕 s = '1234'
print('准备开始循环:')
for i in s:
if i == '3':
continue
print(i)
else:
print('循环正常结束')
print('循环执行完毕')
# 准备开始循环:
# 1
# 2
# 4
# 循环正常结束
# 循环执行完毕

推导式

for 循环还有一个强大的功能,就是推导式,通过推导式可以快速生成列表、元组、字典、集合的数据

推导列表

语法格式

[表达式 for 变量1[变量2..] in 可迭代对象 [if语句]]

示例:

l = [i for i in range(3)]
print(l) # [0, 1, 2] l = [i**2 for i in range(10) if i%2 != 0]
print(l) # [1, 9, 25, 49, 81] l = [(i**2,j*2) for i in range(5) for j in range(3) if i%2 !=0 if j%2==0 ]
print(l) # [1, 9, 25, 49, 81]

推导元组

元组跟列表的操作一摸一样,只不过使用小括号,得到的结果是一个对象,叫生成器
语法格式

(表达式 for 变量1[变量2..] in 可迭代对象 [if语句])

示例:

t = (i for i in range(3))
print(t) # <generator object <genexpr> at 0x7fe14a657ac0> t = (i**2 for i in range(10) if i%2 != 0)
print(t) # <generator object <genexpr> at 0x7fe14b10d120> t = ((i**2,j*2) for i in range(5) for j in range(3) if i%2 !=0 if j%2==0 )
print(t) # <generator object <genexpr> at 0x7fe14a657ac0>

如果想要获得元组,需要使用tuple方法

t = (i for i in range(3))
print(t) # <generator object <genexpr> at 0x7fe14a657ac0>
print(tuple(t)) # (0, 1, 2)

推导字典

操作也是一样,只不过使用大括号,表达式需要是 k:v 形式,得到的结果是一个字典

{k:v for 变量1[变量2..] in 可迭代对象 [if语句]}

示例:

d = {k:None for k in 'abc'}
print(d) # {'a': None, 'b': None, 'c': None} d = {'a': 2, 'b': 30}
d1 = {k: v for k,v in d.items() if v!=2}
print(d1) # {'b': 30}

推导集合

操作跟列表、元组一样,使用大括号

se = {i for i in 'abc12d' if i.isdigit()}
print(se) # {'1', '2'}
http://www.dtmao.cc/news_show_676634.shtml

for循环语句学习的更多相关文章

  1. 【java开发】分支语句、循环语句学习

    一.Java分支语句类型 if-else 语句 switch 关于if-esle语句可以拆分为三种 if语句 if(条件){语句块;} if-else语句if(条件语句){语句块;} if-else ...

  2. python 基础学习4 字典和循环语句

    学了这么多天的基础,好着急的想什么时候可以开始写个小程序,今天还是静下心来把字典和循环语句学习了 关于字典,主要是了解了字典的创建,和映射,以及一些基本的运算法,运算法不一一列出,运算法在用到的时候会 ...

  3. JavaScript循环语句-6---for语句,while语句的应用逻辑

    JavaScript循环语句 学习目标 1.掌握for语句的语法结构 2.掌握for语句的应用逻辑 for语句 语法: For(语句1:语句2:语句3){ 被执行的代码块: } 语句1:在循环(代码块 ...

  4. 04 shell编程之循环语句

    Shell编程之循环语句 学习目标: 掌握for循环语句编程 掌握while循环语句编程 目录结构: For循环语句 l  读取不同的变量值,以逐个执行同一组命令 l  For语句结构 for 变量名 ...

  5. python学习第四讲,python基础语法之判断语句,循环语句

    目录 python学习第四讲,python基础语法之判断语句,选择语句,循环语句 一丶判断语句 if 1.if 语法 2. if else 语法 3. if 进阶 if elif else 二丶运算符 ...

  6. Java之基础学习(数据类型、运算符、分支语句和循环语句)

    在工作用得比较多的是shell和python编程,对于java以前也学习过,使用很少,这次借朋友推荐的java视频教程来温习下. 也是因为现在很多开源测试工具使用java编写的,学习一下更有助于测试工 ...

  7. oracle学习--循环语句

    oracle学习--循环语句  loop循环: create or replace procedure pro_test_loop is i number; begin i:=0; loop i:=i ...

  8. Go语言学习笔记六: 循环语句

    Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...

  9. Python学习笔记(二):条件控制语句与循环语句及常用函数的用法

    总结的内容: 1.条件控制语句 2.while循环语句 3.for循环语句 4.函数的用法 一.条件控制语句 1.介绍 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决 ...

随机推荐

  1. [开源软件] 腾讯云Linux服务器一键安装LAMP/LNMP/LANMP环境 转

    本帖最后由 我本戏子 于 2015-8-13 22:00 编辑OneinStack是非常优秀的一键PHP/JAVA安装脚本,提供以下环境:lnmp(Linux + Nginx+ MySQL+ PHP) ...

  2. 为Github仓库添加Github Actions实现持续集成: Android apk自动编译发布以及github pages同步推送coding.net

    内容转载自我的博客 目录 说明 1. 编写Android项目的CI配置文件 2. 编写Jekyll项目的CI配置文件 2.1 配置coding.net 2.2 配置github 2.3 自动部署到co ...

  3. 死磕以太坊源码分析之state

    死磕以太坊源码分析之state 配合以下代码进行阅读:https://github.com/blockchainGuide/ 希望读者在阅读过程中发现问题可以及时评论哦,大家一起进步. 源码目录 |- ...

  4. 深入理解static、volatile关键字

    static 意思是静态的,全局的.被修饰的东西在一定范围内是共享的,被类的所有实例共享,这时候需要注意并发读写的问题. 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内找到他们. ...

  5. 立完flag,你可能需要对flag进行量化

    DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师. 官方网站:devui.design Ng组件库:ng-devui(欢 ...

  6. 【Java】网络编程之NIO

    简单记录 慕课网-解锁网络编程之NIO的前世今生 & 一站式学习Java网络编程 全面理解BIO/NIO/AIO 内容概览 文章目录 1.[了解] NIO网络编程模型 1.1.NIO简介 1. ...

  7. 【Linux】一个网卡部署多个内网ip

    1.用root权限的用户登录CENTOS,进入network-scripts文件夹下(本步骤可以省略,与二步骤一起完成): shell命令:cd /ect/sysconfig/network-scri ...

  8. 【Android初级】如何实现一个“模拟后台下载”的加载效果(附源码)

    在Android里面,后台的任务下载功能是非常常用的,比如在APP Store里面下载应用,下载应用时,需要跟用户进行交互,告诉用户当前正在下载以及下载完成等. 今天我将通过使用Android的原生控 ...

  9. GraphQL 在酒店系统上的实践

    https://mp.weixin.qq.com/s/Pmut13GYP-kwR2xm8fH-7Q

  10. (002)每日SQL学习:删除名称重复的数据

    create table A ( id VARCHAR2(36), name VARCHAR2(100), sl VARCHAR2(36) ); insert all into a (id,name) ...