python创建集合的语句_(一)Python入门-4控制语句:10推导式创建序列-列表推导式-字典推导式-集合推导式-生成器推导式...

推导式创建序列:

推导式是从一个或者多个迭代器快速创建序列的一种方法。它可以将循环和条件判断结合, 从而避免冗长的代码。推导式是典型的Python 风格,会使用它代表你已经超过Python初 学者的水平。

一:列表推导式

列表推导式生成列表对象,语法如下:

[表达式 for item in 可迭代对象 ]

或者:{表达式 for item in 可迭代对象 if 条件判断}

1 #列表推导式

2 x = [x for x in range(1,5)]3 print(x)4

5 x = [x*2 for x in range(1,5)]6 print(x)7

8 x = [x*2 for x in range(1,100) if x%5 ==0]9 print(x)10

11 x = [x for x in 'abcdefg']12 print(x)13

14 cells = [(row,col) for row in range(1,5) for col in range(1,5)] #可以使用两个循环

15 print(cells)16 for cell incells:17 print(cell)

二:字典推导式

字典的推导式生成字典对象,格式如下: {key_expression : value_expression for 表达式 in 可迭代对象}

类似于列表推导式,字典推导也可以增加 if条件判断、多个 for 循环。

1 #统计字符出现的次数

2 text = 'i love you, i love me, i love family'

3 char_count = {c:text.count(c) for c intext}4 print(char_count)

三:集合推导式

集合推导式生成集合,和列表推导式的语法格式类似: {表达式 for item in 可迭代对象 } 或者:{表达式 for item in 可迭代对象 if 条件判断}

1 #集合推导式:集合的底层是字典(只有字典的key,没有字典的values)

2 x = {x for x in range(1,100) if x%9 ==0}3 print(x)

四:生成器推导式(生成元组)

元组有没有推导式?

>>> (x for x in range(1,100) if x%9==0)

at 0x0000000002BD3048>

我们发现提示的是“一个生成器对象”。显然,元组是没有推导式的。

一个生成器只能运行一次。第一次迭代可以得到数据,第二次迭代数据就没有了(需要重新生成一个生成器)。

1 #生成器推导式(生成元组)

2 gnt = (x for x in range(1,100) if x%9 ==0)3 print(gnt)4 for x in gnt: #循环遍历生成器对象gnt

5 print(x,end='\t')6 for x in gnt: #再次循环遍历生成器对象gnt,发现没有数据了

7 print(x,end='\t')

五:综合练习

1. 【操作】绘制多个同心圆

1 importturtle2 t =turtle.Pen()3 t.width(4)4 t.speed(10)5 my_colors = ('red','green','yellow','black')6 for i in range(10): #0 1 2 3 4 5

7 t.penup()8 t.goto(0,-i*5) #0 5 10 15 20 25

9 t.pendown()10 t.color(my_colors[i%my_colors.__len__()])11 t.circle(10+i*5) #10 15 20 25 30 35

12

13 turtle.done() #程序执行完,窗口仍然在

2. 【操作】绘制18*18 棋盘

1 #绘制18*18的棋盘

2 importturtle3 width = 20

4 num = 18

5 x1 = [(-200,200),(-200+width*num,200)]6 y1 = [(-200,200),(-200,200-width*num)]7 t =turtle.Pen()8 t.speed(10)9 #t . g o t o ( x 1 [ 0 ] [ 0 ] , x 1 [ 0 ] [ 1 ] )

10 #t . g o t o ( x 1 [ 1 ] [ 0 ] , x 1 [ 1 ] [ 1 ] )

11 for i in range(0,19):12 t.penup()13 t.goto(x1[0][0],x1[0][1]-20*i)14 t.pendown()15 t.goto(x1[1][0],x1[1][1]-20*i)16 for i in range(0,19):17 t.penup()18 t.goto(y1[0][0]+20*i,y1[0][1])19 t.pendown()20 t.goto(y1[1][0]+20*i,y1[1][1])21 t.hideturtle() #隐 藏 画 笔

22 turtle.done() #保 证 运 行 窗 口 不 被 自 动 关 闭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值