《Python编程思想》专栏
上一篇:Python编程思想(11):while循环
目录
1. for-in循环的基础知识
2. 用for-in循环变量元组和列表
3. 用for-in循环遍历字典
4. 统计列表中单词的出现次数
for-in循环可以用于遍历范围、列表、元素和字典等可迭代对象包含的元素。 for-in循环的语法格式如下:
for 变量 in 字符串|范围|集合等:
statements
上面的语法格式说明如下:
下面的程序用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中的变量可以称为循环计数器。
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
字典与元组和字典不同,元组和字典每一个元素只有一个值,而字典每一个元素有两个值: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)
字典的用处非常大,例如,可以统计出现在列表中单词的个数,代码如下:
示例代码:统计列表中字符串出现从次数.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。