python循环的基本思想_Python编程思想(12):for-in循环

李宁老师已经在「极客起源」 微信公众号推出《Python编程思想》电子书,囊括了Python的核心技术,以及Python的主要函数库的使用方法。读者可以在「极客起源」 公众号中输入160442开始学习。

-----------正文----------

1. for-in循环的基础知识

for-in循环可以用于遍历范围、列表、元素和字典等可迭代对象包含的元素。for-in循环的语法格式如下:

for 变量 in 字符串|范围|集合等:statements

上面的语法格式说明如下:

for-in循环中的变量的值受 for-in循环控制,该变量将会在毎次循环开始时自动被赋值,因此程序不应该在循环中对该变量赋值;

for -in循环可用于遍历任何可迭代对象。

所谓可迭代对象,就是指该对象中包含一个iter方法,且该方法的返回值对象具有next()方法;

下面的程序用for-in循环计算阶乘。

示例代码:for-in循环.py

str_n = input("请输入一个用于计算阶乘的整数n:")n = int(str_n)result = 1# 使用for-in循环遍历范围for i in range(1, n + 1):result *= iprint(f'{n}的阶乘是{result}')

这段代码会根据输入的n决定循环多少次。假设用户输入了10,那么循环就会在1到10之间循环(包括1和10)。也就是说,for-in循环将自动循环10次,每次循环时,i的值都会自动赋予range包含的每个元素(从1到10)。

运行这段程序,如果输入10,会看到有如下的运行结果:

请输入一个用于计算阶乘的整数n:1010的阶乘是3628800

其中for-in中的变量可以称为循环计数器。

2. 用for-in循环变量元组和列表

for-in循环的主要作用之一就是遍历元组和列表。元组和列表中的元素有多少,for-in循环就会循环几次。对于每一次循环,循环计数器会被依次赋予当前元素的值。

下面的代码用for-in循环分别遍历元组和列表中的所有元素。其中对列表的遍历,会判断列表元素是否为数值类型,如果是,则累加这些值,并统计数值类型值的个数。

示例代码:用for-in循环遍历元组和列表.py

a_tuple = ('李宁', '蒙娜丽宁', '极客起源')for value in a_tuple:print('当前元素是:', value)print('-------------')new_list = [15, 44, 3.2, 64, True, 'hello world', 56, '极客起源', 6666]my_sum = 0my_count = 0for value in new_list:# 如果该元素是整数或浮点数if isinstance(value, int) or isinstance(value, float):print(value)# 累加该元素my_sum += value# 数值元素的个数加1my_count += 1print('总和:', my_sum)print('平均数:', my_sum / my_count)

执行这段这段代码,会输出如下内容:

总和: 6849.2平均数: 978.4571428571428

在上面的代码中,尽管可以迭代元组和列表,但并没有元组和列表的索引,也就是说,在for-in循环中并不知道当前遍历到元组或列表的哪一个元素。不过for-in循环同样可以使用索引遍历元组和列表,然后通过索引访问元组或列表的具体元素。代码如下:

示例代码:for-in循环遍历元组和列表.py

a_list = [230,False, 50.12, '极客起源', -3.0]# 遍历0到len(a_list)的范围for i in range(0, len(a_list)) :# 根据索引访问列表元素print("第%d个元素是 %s" % (i , a_list[i]))

执行这段代码,会输出如下内容:

第0个元素是 230第1个元素是 False第2个元素是 50.12第3个元素是 极客起源第4个元素是 -3.0

3. 用for-in循环遍历字典

字典与元组和字典不同,元组和字典每一个元素只有一个值,而字典每一个元素有两个值:key和value。字典必须包含3个方法:

items():返回字典中所有 key-value对的列表;

keys:返回字典中所有key的列表;

values:返回字典中所有 value的列表;

因此,如果要遍历字典,完全可以先调用字典的上面三个方法之一来获取字典的所有key- value对、所有key、所有 value,然后再进行遍历。如下面的代码先遍历了key-value对,然后分别遍历了key和value。

my_dict = {'Python': 120, 'Java': 131, 'Go': 119}# 通过items()方法遍历所有key-value对# 由于items方法返回的列表元素是key-value对,因此要声明两个变量for key, value in my_dict.items():print('key:', key)print('value:', value)print('-------------')# 通过keys()方法遍历所有keyfor key in my_dict.keys():print('key:', key)# 在通过key获取valueprint('value:', my_dict[key])print('-------------')# 通过values()方法遍历所有valuefor value in my_dict.values():print('value:', value)

4. 统计列表中单词的出现次数

字典的用处非常大,例如,可以统计出现在列表中单词的个数,代码如下:

示例代码:统计列表中字符串出现从次数.py

src_list = [120, 3.4, 3.4, 121, 120, 40, 3.4, 'Python', 45, 3.1]statistics = {}for value in src_list:# 如果字典中包含value代表的keyif value in statistics:# 将value元素代表出现次数加1statistics[value] += 1# 如果字典中不包含value代表的key,说明该元素还未出现else:# 将value元素代表出现次数设为1statistics[value] = 1# 遍历dict,打印出各元素的出现次数for ele, count in statistics.items():print("%s的出现次数为:%d" % (ele, count))

程序运行结果如:

120的出现次数为:23.4的出现次数为:3121的出现次数为:140的出现次数为:1Python的出现次数为:145的出现次数为:13.1的出现次数为:1

上面代码的基本原理就是统计所有出现的原生,并将出现过的元素的出现次数保存在statistics字典中,如果存在,则累计1,如果不存在,说明是头一次遇到这个单词,将statistics中与key对应的value赋为1。

往期回顾:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值