最近放慢了学习进度,原因有两点:在学习python同时,前端最近也在复习中;有js基础学习python确实很顺手,但是有些细枝末节的知识点,还是花费了不少时间!前期基础牢固,后期学习框架会很舒服!!!
这篇文章介绍for表达式:
1、在for关键字前边要定义一个表达式
2、没有循环体,因此不需要冒号
3、for表达式返回的是一个列表,也称为列表推导式
n = range(10)
r = [i*i for i in n]
print(r) #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
上边代码,就是for表达式的写法,对可迭代对象进行循环,外层包裹中括号,返回一个列表(如果外层包裹 括号,返回的是生成器generator对象,需使用list()函数转化为列表,当然你也可以继续循环生成器对象generator)
n = range(10)
r = (i*i for i in n)
for i in r:
print(i,end='-') #0-1-4-9-16-25-36-49-64-81-
for表达式后边也可以添加if条件,for表达式只迭代符合条件的元素:
下边代码,求1~10偶数项,for表达式在n的区间,只循环取余后为0的偶数项
n = range(1,11)
r = [ i for i in n if i%2 == 0 ]
print(r) #[2, 4, 6, 8, 10]
来个小demo:
求1-100之间的素数
l = []
for i in range(1,101):
if i == 1:
continue
elif i == 2:
l.append(i)
else:
if 0 not in [i%j for j in range(2,i)]:
l.append(i)
print(l)
#[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
求1-100之间的素数,首先你要明白,素数是只能整除1和自身的数,所以判断一个数是不是素数,要看这个数除以所有比它小的数,除了1和自身如果还有别的数能被整数,那这个数不是质数!!!
上边代码,首先把1排除掉,2也是已知的素数(其实不把2作为已知的素数也可以),上边是从3开始判断的,主要是后边的else语句,先看后边for表达式,之所以区间是从2开始,因为如果从1开始,所有数%1都是0,没法判断了。假设现在 i 为10,那么下边for表达式的循环区间是2到10,让 10 % 2到10的所有数,看看是否不为0,符合条件说明这个数是素数。。。
d = {i:i*i for i in range(5)}
print(d) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}