for-in循环
在Python中,在上一篇文章中,我讲解了while循环,除了while循环,另外一个最常用的循环是for循环,确切地说是for-in循环。
for-in 循环专门用于遍历范围、列表、字典、字符串等可迭代对象包含的元素。它的语法结构如下:
for 变量 in 字符串|范围|集合|可迭代对象等:
statements;
# 说明:
# 1.for-in循环中的变量是由for-in循环来控制的,该变量在每次循环开始时被赋值
# 因此,程序不应该在循环体内对该变量赋值。
# 2.for-in循环可以遍历任何的可迭代对象,那什么是可迭代对象呢?
# 可迭代对象就是该对象中包含一个__iter__方法,且该对象的返回值具有next()方法的对象
按下来介绍几种最常用的的for-in循环的应用。
for-in循环遍历字符串
s = 'hello python'
for c in s:
print(c, end='-')
print()
# 也可以通过索引访问
for i in range(len(s)):
print(s[i], end='-')
for-in循环遍历元组
t = ('关羽','张飞','赵云','马超','黄忠')
for elem in t:
print(f'五虎上将:{elem}')
print('我是分隔线'.center(30,'-'))
# 也可以通过索引下标访问
for i in range(len(t)):
print(f'五虎上将:{t[i]}')
for-in 遍历列表
l = ['张飞',150,'关羽',180, '刘备',95,'赵云',178]
wl = 0
cnt = 0
for elem in l:
# 如果该元素是整数
if isinstance(elem, int):
print(elem, end="-")
wl += elem
cnt += 1
print()
print(f'武力总和: {wl}')
print(f'平均武力:{wl/cnt}')
print('我是分隔线'.center(50,'*'))
# 通过索引访问
wl = 0
cnt = 0
for i in range(len(l)):
if isinstance(l[i], int):
print(l[i], end='@')
wl += l[i]
cnt += 1
print()
print(f'武力总和: {wl}')
print(f'平均武力:{wl/cnt}')
for-in 循环遍历字典
有关字典的遍历,我之前有一篇文章进行了深入的讲解: 十三、Python字典三种遍历方法
for-in循环用于列表推导式
有关列表推导式的详细使用,请参考我的另一篇文章:九、Python列表推导式