Python for循环可以遍历任何序列的项目,如列表、字符串、元组、字典、集合等序列类型。
语法:
for循环的语法格式如下:
for iterating_var in sequence:statements(s)
流程图:
animals="dog","cat","pig""bird"
for animal in animals:print(animal)#for循环中,print需要缩进
运行结果:
dog
cat
pig
bird
可以看到,使用 for 循环的过程中,迭代变量会先后被赋值,并代入循环体中使用。
Python for循环的具体应用
for 循环进行数值循环
在使用 for 循环时,最基本的应用就是进行数值循环。
比如说,想要实现从 1 到 100 的累加,可以执行如下代码:
print("计算 1+2+...+100 的结果为:")#保存累加结果的变量
result = 0 #逐个获取从 1 到 100 这些值,并做累加操作
for i in range(101):result += i
print(result)
运行结果为:
计算 1+2+...+100 的结果为:
5050
上面代码中,使用了 range() 函数,此函数是 Python 内置函数,用于生成一系列连续整数,多用于 for 循环中。
for循环遍历列表和元组
当用 for 循环遍历 list 列表或者 tuple 元组时,其迭代变量会先后被赋值为列表或元组中的每个元素并执行一次循环体。
下面程序使用 for 循环对列表进行了遍历:
my_list = [1,2,3,4,5]
for ele in my_list:print('ele =', ele)
程序执行结果为:
ele = 1
ele = 2
ele = 3
ele = 4
ele = 5
在Python中,for循环迭代元组与序列差不多,下面程序使用 for 循环对元组进行了遍历:
my_tuple = tuple("23333")
print(my_tuple)
#<<< ('2', '3', '3', '3', '3')
for value in my_tuple:print(value)
程序执行结果如下:
3
2
3
3
3
注意:因为对于字符型的集合,输出集合中的元素的时候,不会保存顺序,所以集合中元素的顺序通常是没有定义的,与序列相同for word in words中的word标识符也是可以随意更改。
for 循环遍历字典
在使用 for 循环遍历字典时,经常会用到和字典相关的 3 个方法,即 items()、keys() 以及 values(),如果使用 for 循环直接遍历字典,则迭代变量会被先后赋值为每个键值对中的键。
my_dic = {'python':"1",'shell':"2",'java':"3"}
for ele in my_dic:print('ele =', ele)
程序执行结果为:
ele = python
ele = shell
ele = java
直接遍历字典,和遍历字典 keys() 方法的返回值是相同的。
循环迭代键:
d = {'x':1,'y':2,'z':3}for key in d.keys():print(key)
除此之外,我们还可以遍历字典 values()、items() 方法的返回值。例如:
循环迭代值:
d = {'x':1,'y':2,'z':3}for value in d.values():print(value)
my_dic = {'python':"1",'shell':"2",'java':"3"}
for ele in my_dic.items():print('ele =', ele)
d.items方法还可以将键-值对作为元组放回,for循环的一大好处就是可以在循环中使用序列解包
程序执行结果为:
ele = ('python', '1')
ele = ('shell', '2')
ele = ('java', '3')
元组,列表,字典之间的转换
元组转换为列表
fruits = ('apple','banana','orange')#元组转换为列表:
list(fruit)#元组不能直接转换为字典,附:
#元组转换为字符串:
fruits.__str__()
列表转换为元组
fruit_list = ['apple','banana','orange']#列表转换为元组:
tuple(fruit_list)#列表不能直接转换为字典,附:
#列表转换为字符串:
str(fruit_list)
字典转换为元组
可以使用函数 tuple() 和 list() 将字典转换为元组和列表,但要注意的是,这里的转换后和之前的元素顺序是不同的,因为字典类似于散列,列表 类似于链表,元组类似于列表只是元素无法改变,所以,要把散列转换为链表而顺序不变是不可行的。但可以借助于有序字典OrderedDict,有序字典是字典的子类,它可以记住元素添加的顺序,从而得到有序的字典。有序字典这里就不深入探讨,给出普通字典的例子参考,代码如下:
fruit_dict = {'apple':1, 'banana':2, 'orange':3}#将字典的key转换为元组:
tuple(fruit_dict)
#将字典的value转换为元组:
tuple(fruit_dict.value())#将字典的key转换为列表:
list(fruit_dict)
#将字典的value转换为列表:
list(fruit_dict.value())#附:
#将字典转换为字符串:
str(fruit_dict)
字符串转换为元组
要将字符串转换为指定的数据结构,那么字符串就必须符合指定数据结构的格式,并借助于 eval() 函数
#将字符串转换为元组:
str = "(1,2,3)"
tuple(eval(str))
#将字符串转换为列表:
str = "(1,2,3)"
list(eval(str))
#将字符串转换为字典:
str = "{'a':1 ,'b',2}"
eval(str)