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

推导式建立序列:

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

一:列表推导式

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

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

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

 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 in cells: 17     print(cell)

二:字典推导式

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

  相似于列表推导式,字典推导也能够增长 if条件判断、多个 for 循环。blog

1 #统计字符出现的次数
2 text = 'i love you, i love me, i love family'
3 char_count = {c:text.count(c) for c in text} 4 print(char_count)

三:集合推导式

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

1 #集合推导式:集合的底层是字典(只有字典的key,没有字典的values)
2 x = {x for x in range(1,100) if x%9 == 0} 3 print(x)

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

  元组有没有推导式?generator

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

    <generator object <genexpr> at 0x0000000002BD3048>io

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

  一个生成器只能运行一次。第一次迭代能够获得数据,第二次迭代数据就没有了(须要从新生成一个生成器)。

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 import turtle  2 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 import turtle  3 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()    # 保 证 运 行 窗 口 不 被 自 动 关 闭
相关文章
相关标签/搜索