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

《Python编程思想》总目录

《Python编程思想》专栏

上一篇:Python编程思想(11):while循环

目录

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

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

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

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


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 *= i
print(f'{n}的阶乘是{result}')

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

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

请输入一个用于计算阶乘的整数n:10
10的阶乘是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 = 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)

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

总和: 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()方法遍历所有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

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))

程序运行结果如:

120的出现次数为:2
3.4的出现次数为:3
121的出现次数为:1
40的出现次数为:1
Python的出现次数为:1
45的出现次数为:1
3.1的出现次数为:1

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

 

你可能感兴趣的:(Python编程思想,Python,培训)