简单的 for 循环遍历
x_n = ["x1","x2","x3"] for x in x_n: print(x) >> x1 x2 x3
借助 range() 和 len()
x_n = ["x1","x2","x3"] for i in range(len(x_n)): print(x_n[i]) >> x1 x2 x3
借助 enumerate()
enumerate() 是 python 的内置函数,表示枚举的意思,其处理的是可迭代或者可遍历对象(列表,字符串等),可以同时获得 值 和 其在对象中的索引号
x_n = ["x1","x2","x3"] for i,x in enumerate(x_n): print(i,x) >> (0, 'x1') (1, 'x2') (2, 'x3')
借助 iter()
iter() 的参数必须是一个可迭代或者可遍历对象,这与enumerate() 一致,iter() 返回的是迭代器
x_n = ["x1","x2","x3"] for x in iter(x_n): print(x) print(type(x_n)) print(type(iter(x_n))) >> x1 x2 x3 >> <type 'list'> >> <type 'listiterator'>
由于 iter() 可以构成迭代器对象的迭代器,其可以使用 next() 函数 来获取迭代器的下一条数据
x_n = ["x1","x2","x3"] x_i = iter(x_n) for x in range(len(x_n)): print(next(x_i)) >> x1 x2 x3
简单嵌入
一行代码就可以实现循环功能
my_list = [表达式 for 循环项 in 循环体 ]
例子:
import math x_n = "Hello World" y_n = [1,2,3] my_listx = [n for n in x_n] my_listy = [math.pow(n,2) for n in y_n] # 调用math库的pow求幂 my_listy_1 = [pow(n,2) for n in y_n] # 调用python内置的pow求幂 print(my_listx) print(my_listy) print(my_listy_1) >> ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd'] >> [1.0, 4.0, 9.0] >> [1, 4, 9]
tips: math库的 pow() 输入为 float 型,若输入为整型(int)则自动转换为 float,输出结果也为 float;python 内置的pow() 输入为整型,输出为整型,输入为float,输出也为float
加入条件
在循环中使用条件判断(在for循环的后面加或者前面加),以筛选出合适的数据
my_list = [表达式 for 循环项 in 循环体 if 条件]
或者有第二种形式:
my_list = [表达式1 if 条件 else 表达式2 for 循环项 in 循环体]
此时 if 必须要和 else 搭配,不然会报错;且当 if 条件为真, 结果为表达式1,否者结果为 表达式2
例子:
import math x_n = ["Hello World", "No good", "Good thing"] y_n = [1,2,3,4] my_listx = [n for n in x_n if n.startswith("Hello")] my_listy = [math.pow(n,2) for n in y_n if n > 1] print(my_listx) print(my_listy) >> ['Hello World'] >> [4.0, 9.0, 16.0] ------------------------------------------- ## 第二种形式 ## import math x_n = ["Hello World", "No good", "Good thing"] y_n = [1,2,3,4] my_listx = [n if n.startswith("Hello") else "No print" for n in x_n] my_listy = [math.pow(n,2) if n > 2 else math.pow(n,3) for n in y_n] print(my_listx) print(my_listy) >> ['Hello World', 'No print', 'No print'] >> [1.0, 8.0, 9.0, 16.0]
嵌套循环
与普通的for循环类似,list中也可以嵌套for循环来达到目的
my_list = [表达式 for 循环项1 in 循环体 for 循环项 in 循环项1]
其中第一个循环为最外层循环,后面的循环为内层循环,最后表达式的结果和次数都是按照最后一个循环内来计算的
例子:
x_n = ["Hello", "World"] my_listx = [n for name in x_n for n in name] my_listy = [name for name in x_n for n in name] print(my_listx) print(my_listy) >> ['H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd'] >> ['Hello', 'Hello', 'Hello', 'Hello', 'Hello', 'World', 'World', 'World', 'World', 'World'] -------------------------------- ## 上面的和下面的一样的效果 ## my_list1 = [] my_list2 = [] for name in x_n: for n in name: my_list1.append(n) my_list2.append(name) print(my_list1) print(my_list2) >> ['H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd'] >> ['Hello', 'Hello', 'Hello', 'Hello', 'Hello', 'World', 'World', 'World', 'World', 'World']