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
posted @ 2021-02-06 15:15  唯爱编程  阅读(281)  评论(0编辑  收藏  举报