当需要在程序中重复执行某些指令,如果执行几遍就写几遍,很容易出错。而且这样代码也特别长,可读性也不高。
在Python中,提供了循环语句来反复执行一段代码。
>一般重复语句主要有两种类型的循环:
1)重复一定次数的循环,这个称谓计数循环。
2)重复直至发生某种情况时结束的循环,成为条件循环。也就是说只有条件为True,循环才会一直持续下去。
python中实现循环有很多种方式,比如
> for loop
> while loop
> 列表推导式
> map函数
**1.for loop**
for循环是最常使用的循环方式;
它常用于遍历字符串、列表、元组、字典、集合等序列类型,逐个获取序列中的各个元素。
for 循环的语法格式如下:
>for 迭代变量 in 字符串|列表|元组|字典|集合:
代码块
伪代码如下:
! encoding:utf-8
nums = range(1,10)
for num in nums:
print(str(num))
dic = {'key1':'v1','k2':'v2'}
for d in dic:
print(d)
for d in dic.values():
print(d)
for d in dic.items():
print(d)
但for循环遍历字典时,需要说明遍历的对象:
> dic.keys(),dic.values(),dic.items()
直接遍历字典,等于遍历的是字典中的keys
**2.while loop**
while 循环在条件表达式为真的情况下,会执行相应的代码块。只要条件为真,while 就会一直重复执行那段代码块。
while 语句的语法格式如下:
>while 条件表达式:
代码块
具体流程如下:
1. 首先判断条件表达式的值,其值为真(True)时,则执行代码块中的语句,
2. 执行完毕后,重新判断条件表达式的值是否为真,若仍为真,则继续重新执行代码块...
3. 如此循环,直到条件表达式的值为假(False),才终止循环。
伪代码如下:
nums = range(1,10)
a = 8
i = 0
while a > nums[i]:
print(nums[i])
i = i + 1
**3.列表推导式**
所谓列表推导式就是Python中一种更有风格的Python代码的写法。用列表推导式来书写的话很可能一行代码就完成三行五行甚至是更多行代码才能完成的工作,所以推导式的作用就是化简代码用的。
语法格式如下:
>[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]
此格式中,[if 条件表达式] 不是必须的,可以使用,如下:
>result = [doit(item) for item in items]
简单推导式伪代码:
list_num = [i for i in range(1,10)]
print(list_num)
添加一个if条件
list_num = [i for i in range(1,10) if i % 2 == 0]
print(list_num)
多个for循环的
list_num2 = [(i, j) for i in range(1, 3) for j in range(3)]
print(list_num2)
**4.map函数**
Python map函数是允许你使用一个函数转换整个可迭代对象的函数。用map能实行的用for基本都能实行,不过map比for更快
Python map 函数的语法如下:
>result = map(insert function here, insert iterable here)
map函数接收的第一个参数为一个函数对象,后面接收1个或多个序列;map函数会将func作用在后面序列中的各个值上,并返回一个迭代器。
伪代码如下:
m_r = map(int,range(1,10))
print(list(m_r))
当传入传入多个序列,一个序列对应一个函数的参数;序列长度可以不一致,默认取到共同长度的序列值为止;
伪代码如下:
def func(a,b):
return a+b
b=list(map(func,range(1,5),range(1,7)))#两个序列对应位置的值分别作为a,b作用到func中;
print(b)