for循环语句学习
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循环语句学习的更多相关文章
- 【java开发】分支语句、循环语句学习
一.Java分支语句类型 if-else 语句 switch 关于if-esle语句可以拆分为三种 if语句 if(条件){语句块;} if-else语句if(条件语句){语句块;} if-else ...
- python 基础学习4 字典和循环语句
学了这么多天的基础,好着急的想什么时候可以开始写个小程序,今天还是静下心来把字典和循环语句学习了 关于字典,主要是了解了字典的创建,和映射,以及一些基本的运算法,运算法不一一列出,运算法在用到的时候会 ...
- JavaScript循环语句-6---for语句,while语句的应用逻辑
JavaScript循环语句 学习目标 1.掌握for语句的语法结构 2.掌握for语句的应用逻辑 for语句 语法: For(语句1:语句2:语句3){ 被执行的代码块: } 语句1:在循环(代码块 ...
- 04 shell编程之循环语句
Shell编程之循环语句 学习目标: 掌握for循环语句编程 掌握while循环语句编程 目录结构: For循环语句 l 读取不同的变量值,以逐个执行同一组命令 l For语句结构 for 变量名 ...
- python学习第四讲,python基础语法之判断语句,循环语句
目录 python学习第四讲,python基础语法之判断语句,选择语句,循环语句 一丶判断语句 if 1.if 语法 2. if else 语法 3. if 进阶 if elif else 二丶运算符 ...
- Java之基础学习(数据类型、运算符、分支语句和循环语句)
在工作用得比较多的是shell和python编程,对于java以前也学习过,使用很少,这次借朋友推荐的java视频教程来温习下. 也是因为现在很多开源测试工具使用java编写的,学习一下更有助于测试工 ...
- oracle学习--循环语句
oracle学习--循环语句 loop循环: create or replace procedure pro_test_loop is i number; begin i:=0; loop i:=i ...
- Go语言学习笔记六: 循环语句
Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...
- Python学习笔记(二):条件控制语句与循环语句及常用函数的用法
总结的内容: 1.条件控制语句 2.while循环语句 3.for循环语句 4.函数的用法 一.条件控制语句 1.介绍 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决 ...
随机推荐
- MySQL/MariaDB二进制安装
本文说明MySQL/MariaDB二进制安装的过程 mysql和mariadb的安装方式基本一致,唯一初始化方式有点不一样 1.规划: 数据文件存储位置 /data/my ...
- python 3.6 导入c++dll所遇到的坑
1 返回值在c++里面为const char*,python 接收实际上为int类型 原因:python默认返回值为int 解决方法: import ctypes import os CUR_PATH ...
- Java 中泛型的实现原理
泛型是 Java 开发中常用的技术,了解泛型的几种形式和实现泛型的基本原理,有助于写出更优质的代码.本文总结了 Java 泛型的三种形式以及泛型实现原理. 泛型 泛型的本质是对类型进行参数化,在代码逻 ...
- 白日梦的Elasticsearch笔记(一)基础篇
目录 一.导读 1.1.认识ES 1.2.安装.启动ES.Kibana.IK分词器 二.核心概念 2.1.Near Realtime (NRT) 2.2.Cluster 2.3.Node 2.4.In ...
- Android iText向pdf模板插入数据和图片
一.需求 这些日志在写App程序,有这么一个需求,就是需要生成格式统一的一个pdf文件,并向固定表格中填充数据,并且再在pdf中追加两页图片. 二.方案 手工设计一个pdf模板,这个具体步骤就不再赘述 ...
- JavaScript中的Promise【期约】[未完成]
JavaScript中的Promise[期约] 期约主要有两大用途 首先是抽象地表示一个异步操作.期约的状态代表期约是否完成. 比如,假设期约要向服务器发送一个 HTTP 请求.请求返回 200~29 ...
- 前端面试之CSS权重问题!
前端面试之CSS权重问题! 下面的权重按照从小到大来排列! 1.通用选择器(*) 2.元素(类型)选择器 权重1 3.类选择器 权重10 4.属性选择器 5.伪类 6.ID 选择器 权重100 7.内 ...
- zabbix客户端监控脚本shell
zabbix客户端监控脚本shell #!/bin/sh sleep 3 zabbixdir=`pwd` zabbix_version=4.2.5 ###指定版本,最好和server端吻合版本,可以自 ...
- C++旋转数组(三种解法详解)
题目描述 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 附加要求 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题. 你可以使用空间复杂度为 O(1) 的 原地 ...
- 关于Java客户端连接虚拟机中的Kafka时,无法发送、接收消息的问题
kafka通过控制台模拟消息发送和消息接收正常,但是通过javaAPI操作生产者发送消息不成功 消费者接收不到数据解决方案? 1.问题排查 (1)首先通过在服务器上使用命令行来模拟生产.消费数据,发现 ...