python-for表达式

最近放慢了学习进度,原因有两点:在学习python同时,前端最近也在复习中;有js基础学习python确实很顺手,但是有些细枝末节的知识点,还是花费了不少时间!前期基础牢固,后期学习框架会很舒服!!!

这篇文章介绍for表达式:

for表达式与普通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表达式后边添加迭代条件:

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,符合条件说明这个数是素数。。。

 

补充:

for表达式,可以生成字典或者集合:

d = {i:i*i for i in range(5)}
print(d) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

 

你可能感兴趣的:(Python)