python——列表生成式

概述:

          列表生成式即List    Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。

          列表生成式的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是0个或多个for或者if语句。列表表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以if和for语句为上下文的表达式运行完成之后产生。

格式:

variable    =    [out_exp    for    out_exp    in    input_list    if    out_exp    ==    2]

例题练习:

        下面通过例题来对列表生成式进行深入的理解。

1. 生成一个列表,列表元素分别为 [1*1,2*2,3*3……n*n],假设n = 10。

## 若用一般方法实现代码如下:

## 若用列表生成式:

但是结果一模一样,如下图:

2.接着上一个需求,要求返回的序列中不存在偶数项:

## 若用列表生成式代码如下:

## 其实将上面的代码翻译一下,就和下面代码一个意思:

执行结果如下:

3. 字符串s1 ='ABC',字符串 s2 = '123',要求:生成序列 A1 A2 A3 B1 B2 B3 C1 C2 C3

## 初学者思维:

## python老手思维:

运行结果是相同的:

4. 将3x3的矩阵li1转化成一个数组(列表),且使该数组中仅仅包含偶数:

li1 =[
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 采用列表生成式的代码如下:

# 下面代码这种思维就有点像用c语言编程了,既然python中有简单的方法,我们最好就用简单的方法:

运行结果如下:

5. 找出1-10之间所有的偶数,并且返回一个列表(这个列表中含以这个偶数为半径的圆的面积)

方法一:使用列表生成式,计算圆的面积要用到圆周率参数,需要导入math模块:

方法二:  定义一个求圆面积的函数,然后在列表生成式中直接调用函数,从而求出序列中符合条件的半径的面积:

运行结果:

6. 找出1-100之间的所有的质数:

## 说明:列表生成式和函数的结合使用,应用是很广泛的:

7.  腾讯2018校招在线编程题:

第一步:从终端接收一个输入的数:

num1 = int(input('输入3<num<1000的整数:'))

第二步:找出接收的数的范围以内的质数:

def zhishu(f):
    if f == 1:
        return False
    for j in range(2, f):
        res = f % j
        if res == 0:
            return False
    else:
        return True

list1 = [i for i in range(2, num1+1) if zhishu(i)]

第三步: 求出符合题目条件的质数对的数量:

       方法一:

N = 0
for n in list1:
    for k in list1:
        if n + k == num1 and n <= k:   ### 写到这时,马同学思维是解决重复,我想着怎样让不重复
            N += 1
print(N)

      方法二:

N = 0
for item in list1:       ### 老师的思维
    if 10-item in list1 and item <= 10-item:
        N += 1
print(N)

        明显第二种方法更简单,而且思维也不是太难想。 但是为什么就想不到了,因为对题目理解的太浅薄了,对题目这个问题的条件没有相互联系,对题目过程没有做深入的演练,导致只能用很low的思维去解决问题。

 

 

 

  • 94
    点赞
  • 370
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值