1. 程式人生 > >第二章數據分析簡介

第二章數據分析簡介

函數 進行 同時 表達式 tom nbsp 交集 bsp map

lambda:

  • lambda是一個表達式,也可以說是一個匿名函數。
  • lambda [ arg1 [arg2, arg3, … argN] ] : expression,lambda右側的表達式冒號左邊為參數值,右邊為計算表達式。例如:對兩個數進行求和。
p = lambda x, y: x + y

2.創建字典的三種方法:

  • d = {‘today‘: 20, ‘tomorrow‘: 30}
  • dict([[‘today‘, 20], [‘tomorrow‘, 30]])
  • dict.fromkeys([‘today‘, ‘tomorrow‘], 20, 30)

3.集合:

  • s = {1, 2, 2, 3}    # 註意2會自動去重,得到{1, 2, 3}
  • s = set([1, 2, 2, 3])  # 得到{1, 2, 3}

4.集合的一些運算:

  • a = t | s  # t和s的並集
  • b = t & s  # t和s的交集
  • c = t - s  # 求差集(在t中不再s中)
  • d = t ^ s  # 對稱差集(在t或s中,但不會同時在兩者中)

5.map():(1)列表a = [1, 2, 3],給列表每個元素加2得到b。

a = [1, 2, 3]

b = map(lambda x: x+2, a)

b = list(b)

在3.x需要b = list(b)這一步,因為map函數僅僅是創建一個待運行的命令容器,只有其他函數調用它的時候才會返回結果。

(2)map()接受多參數:map(lambda x, y: x*y ,a, b)表示將a, b兩個列表元素對應相乘。

6.reduce():

reduce()有點像map(),但map()函數用於逐一遍歷,reduce()函數用於遞歸計算。

reduce(lambda x, y: x*y, range(1, n+1))

reduce命令首先將列表的前兩個元素作為函數的參數進行運算,然後將運算結果與第三個數字作為函數的參數,然後將運算結果與第四個數字作為函數的參數......依次類推,直到列表結束。用循環命令即為:

s = 1
for i in range(1, n+1):
    s 
= s * i

在2.x中,上述函數可直接使用,在3.x中,reduce()函數置於fuctools庫中,通過

from fuctools import reduce

7.filter():

filter()是一個過濾器,用來篩選列表中符合條件的元素,例如:

b = filter(lambda x: x > 5 and x < 8, range(10))
b = list(b)            # 結果為[6, 7],在3.x中需要這一步,2.x不需要

第二章數據分析簡介