形式:[函数/表达式 for语句 0至多个for/if语句]
逻辑上等价于循环语句,但形式上更简洁
如何将一个数字列表中的元素扩大两倍?
方法一:
n=[10,-33,21,55,117,510] number=[] for i in n: number.append(i*2) print(number)
分析:使用for循环遍历n中的元素,然后将其扩大两倍增添到一个新列表中
方法二:
n=[10,-33,21,55,117,510] number=[i*2 for i in n] print(number)
分析:使用了列表推导式,注意一点在列表推导式中,函数/表达式与for语句不是用逗号隔开的
列如:
n=[[10,-33,21],[5,-7,-9,3,28,-16,37]] number=[j*2 for i in n for j in i] print(number)
在列表推导式中,if起到筛选过滤的作用接着上面的例子,将正数扩大两倍组成新列表
n=[10,-33,21,55,117,510] number=[i*2 for i in n if i>0] print(number)
列表推导式中还可以使用if-else语句
例:将一个数字列表中的正偶数扩大两倍,正奇数扩大三倍
n=[1,2,-3,5,2,-8,8,7] number=[i*2 if i%2==0 else i*3 for i in n if i>0] print(number)
列题讲解
现有一产品1~30日的销售量如下
123,226,136,178,124,167,183,194,119,135,189,125,173,193,143,226,201,200,221,226,132,163,225,129,150,151,226,177,189,134,222
找出最大销售量,及所在日子输出
sales=[123,226,136,178,124,167,183,94,119,135,189,125,173,193,143,\ 226,201,200,221,226,132,163,225,129,150,151,226,177,189,134,222] highest=max(sales) hh=[i for i,j in enumerate(sales,1) if j==highest] print("最大销量为:",highest) print("销售日分别为:",end=' ')
列表推导式中可以使用函数
利用列表推导式快速生成15个30~80之间的随机数
import random rlist=[random.randint(30,80) for i in range(15)] print(rlist)
同时可以使用自己定义的函数
import random rlist=[random.randint(30,80) for i in range(15)] print(rlist) def ff(x): if x%3==0: x/=3 elif x%7==0: x*=2 else: x*=5 return x number=[ff(i) for i in rlist] print(number)
score1=[89,56,77,46,89,99,67] score2=[34,99,58,68,99,89,98] nn=[(i,j) for i in score1 if i>80 for j in score2 if j<60] print(nn)
# -*- coding:utf-8 -*- import turtle import time # 画爱心的顶部 def LittleHeart(): for i in range(200): turtle.right(1) turtle.forward(2) # 输入表白的语句,默认I Love you love = input('请输入表白语句,默认为输入为"I Love you": ') # 输入署名或者赠谁,没有不执行 me = input('请输入您心上人的姓名或者昵称: ') if love == '': love = 'I Love you' # 窗口大小 turtle.setup(width=800, height=500) # 颜色 turtle.color('red', 'pink') # 笔粗细 turtle.pensize(5) # 速度 turtle.speed(1) # 提笔 turtle.up() # 隐藏笔 turtle.hideturtle() # 去到的坐标,窗口中心为0,0 turtle.goto(0, -180) turtle.showturtle() # 画上线 turtle.down() turtle.speed(1) turtle.begin_fill() turtle.left(140) turtle.forward(224) # 调用画爱心左边的顶部 LittleHeart() # 调用画爱右边的顶部 turtle.left(120) LittleHeart() # 画下线 turtle.forward(224) turtle.end_fill() turtle.pensize(5) turtle.up() turtle.hideturtle() # 在心中写字 一次 turtle.goto(0, 0) turtle.showturtle() turtle.color('#CD5C5C', 'pink') # 在心中写字 font可以设置字体自己电脑有的都可以设 align开始写字的位置 turtle.write(love, font=('gungsuh', 30,), align="center") turtle.up() turtle.hideturtle() time.sleep(2) # 在心中写字 二次 turtle.goto(0, 0) turtle.showturtle() turtle.color('red', 'pink') turtle.write(love, font=('gungsuh', 30,), align="center") turtle.up() turtle.hideturtle() # 写署名 if me != '': turtle.color('black', 'pink') time.sleep(2) turtle.goto(180, -180) turtle.showturtle() turtle.write(me, font=(20,), align="center", move=True) # 点击窗口关闭 window = turtle.Screen() window.exitonclick()