(一)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()    # 保 證 運 行 窗 口 不 被 自 動 關 閉
相關文章
相關標籤/搜索