python 生成器和生成器表達式

1.生成器python

  生成器的本質就是迭代器數組

  生成器的特色和迭代器同樣.取值方式和迭代器同樣(__next__(),send():給上一個yield傳值)函數

  生成器通常由生成器函數或者生成器表達式來建立spa

  其實就是手寫的迭代器code

2.生成函數blog

  和普通函數沒有區別.裏面有yield的函數就是生成器函數.內存

  生成器函數在執行的時候.默認不會執行函數題.返回生成器字符串

  經過生成器的__next__()分段執行這個函數.for循環

  send()給上一個yield傳值,不能再開頭(沒有上一個yield),最後一個yield也不能夠用send()class

3.推導式

  1.列表推導式[結果 for循環 條件篩選]

  2.字典推導式{k:v for循環 條件篩選}

  3.集合推導式{k for循環 條件}

4.生成器表達式

  (結果 for循環 條件)

  特色:

    1.情性機制

    2.只能向前

    3.節省內存(雞蛋)

 

 

 

1,用列表推導式作下列小題

  (1) 過濾掉長度小於3的字符串列表,並將剩下的轉換成大寫字母

  (2) 求(x,y)其中x是0-5之間的偶數,y是0-5之間的奇數組成的元祖列表

  (3) 求M中3,6,9組成的列表M = [[1,2,3],[4,5,6],[7,8,9]]

  (4) 求出50之內能被3整除的數的平方,並放入到一個列表中。

  (5) 構建一個列表:['python1期', 'python2期', 'python3期', 'python4期', 'python6期', 'python7期',   'python8期', 'python9期', 'python10期']

  (6) 構建一個列表:[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]

  (7) 構建一個列表:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

 (8) 有一個列表l1 = ['alex', 'WuSir', '老男孩', '太白']將其構形成這種列表['alex0', 'WuSir1', '老男孩2', '太白3']

  (9)有如下數據類型:

  x = {
      'name':'alex',
      'Values':[{'timestamp':1517991992.94,
           'values':100,},
             {'timestamp': 1517992000.94,
          'values': 200,},
          {'timestamp': 1517992014.94,
           'values': 300,},
          {'timestamp': 1517992744.94,
           'values': 350},
          {'timestamp': 1517992800.94,
              'values': 280}
              ],}

將上面的數據經過列表推導式轉換成下面的類型:[[1517991992.94, 100], [1517992000.94, 200], [1517992014.94, 300], [1517992744.94, 350], [1517992800.94, 280]]

 

 

 

 

# 1 # (1)
lst = ['a','qwer','zxcv','12','JQK'] li = [i for i in lst if len(i) >= 3] print(li) # (2)
lst = [(x,y) for x in range(6) for y in range(6) if x % 2 ==0 and y % 2 ==1] print(lst) # (3)
M = [[1,2,3],[4,5,6],[7,8,9]] lst = [i[2] for i in M] print(lst) # (4)
li = [i**2 for i in range(51) if i % 3 ==0] print(li) # (5)
lst = ["python"+str(num) for num in range(1,11)] print(lst) # (6)
li = [(x,x+1) for x in range(6)] print(li) # (7)
lst = [i for i in range(19) if i % 2 ==0] print(lst) # (8)
l1 = ['alex', 'WuSir', '老男孩', '太白'] l2 = [l1[i]+str(i) for i in range(4)] print(l2) # (9)
x = { 'name':'alex', 'Values':[{'timestamp':1517991992.94, 'values':100,}, {'timestamp': 1517992000.94, 'values': 200,}, {'timestamp': 1517992014.94, 'values': 300,}, {'timestamp': 1517992744.94, 'values': 350}, {'timestamp': 1517992800.94, 'values': 280} ],} li = [j for i in x["Values"] for j in i.values()] print(li)
相關文章
相關標籤/搜索