python中for语句用法_Python

前言

for语句主要用于遍历某个可迭代的变量,例如:字符串、列表、元组等。

基本语法(一)

语法格式:

for 迭代变量 in 遍历序列:

执行语句......

1) 执行过程: 依次将‘遍历序列’的每一个值传递给‘迭代变量’,每传递一个值时执行一次内部语句,直至‘遍历序列’的最后一个元素,for语句退出。

2)遍历序列可以是字符串(str),列表(list),元组(tuple)....

实例如下:

#!/usr/bin/python3

# -*- coding: utf-8 -*-

for x in "12ab":

print("Hello World",x)

实例输出:

hello world 1

hello world 2

hello world a

hello world b

可以看出,for语句循环的次数等于字符串元素的个数,遍历时for语句把字符串的元素依次赋给了 x 并打印输出。

基本语法(二)

for 迭代变量 in range ( i, j [,k ]):

执行语句......

参数说明:

i: 初始值(默认为‘0’)

j: 终止值(默认为‘1’)

k: 步进值,即每次重复操作时比上一次操作所增长的数值。

执行过程:

第一步:将 i 值传递给 ‘迭代变量’,然后执行一次内部语句;

第二步:在 i 的基础上 + k 再次传递给 ‘迭代变量’,如果 ‘迭代变量’ 的值小于 ‘j’ 的值,则再次执行内部语句,否则退出for循环。

实例如下:

#!/usr/bin/python3

# -*- coding: utf-8 -*-

for x in range(5):

print("Hello World",x)

运行输出:

hello world 0

hello world 1

hello world 2

hello world 3

hello world 4

可以看出,for语句从 range()中一共获取了0~4五个值,所以for语句在这里循环执行了5次。

for语句正/异常退出

实例如下:

#!/usr/bin/python3

# -*- coding: utf-8 -*-

import time # 引用时间模块

for a in range(1,4):

print(a) # 输出 a 的值

time.sleep(1)

else:

print("done")

实例输出:

1

2

3

done

可以看出,for 语句正常执行完毕后会执行 else 中的语句;

下面看一下程序异常退出的情况:

同样运行此程序,在程序未执行完毕的时候,按下 ctrl+c 键退出执行程序,可以看到有个提示:

KeyboardInterrupt

终端会报错,提示程序被中断,同时可以看到else中的语句也没有被执行,表明程序异常退出!当在 time.sleep(1) 后附加一条 break 语句时,else 中的语句也不会被执行。

for语句的应用

(1)用for语句迭代遍历字符串(str)、列表(list)、元组(tuple)的元素

方法有以下两种:下面以遍历一个字符串为例,实例如下:

方法一:

#!/usr/bin/python3

# -*- coding: utf-8 -*-

str = "hello world"

for i in str:

print( i )

说明:此方法的执行过程是,直接通过获取每一个元素的值进行遍历的。

方法二:

#!/usr/bin/python3

# -*- coding: utf-8 -*-

str = "hello world"

for i in range( len(str) ):

print(str[i])

分析:此方法的执行过程是通过 len() 函数获得字符串 str 的总长度,并将其作为range() 的范围,在每次遍历时将其值赋值给变量 i ,然后以 i 的值作为下标值,最终获得该字符串的所有元素。

(2)用 for 语句迭代遍历字典(dic)获得其元素

分析:因为字典是一个无序的序列,所以不能通过下标的形式进行获取中 key 所对应的元素,需要先获取其 key 值,再对 key 进行遍历即可获得对应的键值。方法有以下两种:

方法一:

先遍历出其 key ,具体如下:

#!/usr/bin/python3

# -*- coding: utf-8 -*-

tup = {'a':'hello', 'b':'world', 11:222}

for x in tup:

print( x ) # 此时获取到的是‘key’的值

实例输出:

a

11

b

可见直接迭代一个字典时,获取到的是该字典的键。在拿到 key 后就好办了,直接通过键就可以取到对应的值了,实例如下:

#!/usr/bin/python3

# -*- coding: utf-8 -*-

tup = {'a':'hello', 'b':'world', 11:222}

for x in tup:

print(tup[x]) # 通多'key'获取'键值'

运行输出:

hello

222

world

注意:由于字典属于无序的序列,所以在迭代一个字典时,随着字典内数据的变化,其输出的 key 的顺序也随之变化。

方法二:

使用字典中提供的 itmes() 方法:

#!/usr/bin/python3

# -*- coding: utf-8 -*-

tup = {'a':'hello', 'b':'world', 11:222}

print(tup.items() ) #调用 itmes() 方法

运行输出:

[('a', 'hello'), (11, 222), ('b', 'world')]

可以看出,此时返回的是 元组对 的形式,下面通过 for 语句获取其中的元素:

#!/usr/bin/python3

# -*- coding: utf-8 -*-

tup = {'a':'hello', 'b':'world', 11:222}

for k,v in tup.items():

print(k,v) # 并排输出'key'与'key值'

运行输出:

a hello

11 222

b world

分析:执行过程为通过 itmes() 方法将字典数据转化为 元组对 的形式,然后通过for 语句将 key 值赋给变量 k ,将 value 值赋给变量 v ,直至遍历结束!

列表解析表达式(高级用法)

使用列表解析,可以简单高效地处理一个可迭代对象,并生成结果列表。

表达式格式如下:

for_expression.jpg

表达式1:迭代序列里所有内容,并计算生成列表

表达式2:按条件迭代,并计算生成列表

表达式 expr 使用每次迭代内容 i1 - iN,计算生成一个列表。如果指定了条件表达式 cond_expr ,则只有满足条件的元素参与迭代。

实例演示:

>>> [i**2 for i in range(10)] # 平方值

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

>>> [(i,i**2) for i in range(10)] # 序号,平方值

[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49), (8, 64), (9, 81)]

>>> [i for i in range(10) if i%2==0] # 取偶数

[0, 2, 4, 6, 8]

>>> [(x, y, x*y) for x in range(1, 4) for y in range(1, 4) if x>=y] # 二重循环

[(1, 1, 1), (2, 1, 2), (2, 2, 4), (3, 1, 3), (3, 2, 6), (3, 3, 9)]

>>>

喜欢 (1)or分享 (0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值