前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python编程思想(12):for-in循环

Python编程思想(12):for-in循环

作者头像
蒙娜丽宁
发布2020-06-16 12:06:43
3.5K0
发布2020-06-16 12:06:43
举报
文章被收录于专栏:极客起源极客起源

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

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

代码语言:javascript
复制
for 变量 in 字符串|范围|集合等:
    statements

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

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

for -in循环可用于遍历任何可迭代对象。所谓可迭代对象,就是指该对象中包含一个iter方法,且该方法的返回值对象具有next()方法;

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

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

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

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

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

代码语言:javascript
复制
请输入一个用于计算阶乘的整数n:10
10的阶乘是3628800

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

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

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

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

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

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

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

代码语言:javascript
复制
总和: 6849.2
平均数: 978.4571428571428

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

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

代码语言:javascript
复制
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]))

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

代码语言:javascript
复制
第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。

代码语言:javascript
复制
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()方法遍历所有key
for key in my_dict.keys():
    print('key:', key)
    # 在通过key获取value
    print('value:', my_dict[key])
print('-------------')
# 通过values()方法遍历所有value
for value in my_dict.values():
    print('value:', value)

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

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

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

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

程序运行结果如:

代码语言:javascript
复制
120的出现次数为:2
3.4的出现次数为:3
121的出现次数为:1
40的出现次数为:1
Python的出现次数为:1
45的出现次数为:1
3.1的出现次数为:1

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客起源 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档