python推導:列表推導式、字典推導式、集合推導式,filter, map, reduce。

列表推導式數組

  • 例:整除3的數字  0-100
  • nums=[];
    num=[];
    for i in range(100):
        if i%2==0:
            nums.append(i);
        else:
            num.append(i);
    print(nums);
    print(num);
    
    n=[i for i in range(100) if i%3==0]
    print(n);
  • 調用函數
  • def squared(x):
        return x*2;
    wq=[];
    q=[];
    for x in range(30):
        if x%3==0:
            wq.append(squared(x));
    
    q=[squared(y) for y in range(30) if y%3==0]
    print(wq);
    print(q);
  • 使用()生成generator
  • 將列表推導式的【】改爲()便可獲得生成器。--yeild
  • def squared(x):
         return x*2;
    q=(squared(y) for y in range(30) if y%3==0);
    print(type(q));
    print(q);

字典推導式app

  • 字典推導式和列表推導的使用方法是相似的,只不過中括號改爲大括號
  • 例:快速更換key和value
  • mcase={'a':10,'b':34};
    for k,v in mcase.items():#items 可替換成keys和values,分別遍歷鍵和值
        print(k,v);
    
    mk={v:k for k,v in mcase.items()}
    print(mk);

集合推導式函數

  • 他們跟列表推導式也是相似的。惟一的區別在於它使用大括號{}
  • strings=['a','is','with','if','file','exception'];
    l={len(s) for s in strings};
    print(l);

練習:generator

  • 0-9的2次方
  • l=[i*i for i in range(10)];
    print(l);
  • 將單詞長度大於3的轉爲大寫輸出
  • names = ['bob','tom','alice','jerry','wendy','smith']
    a=[name.upper() for name in names if len(name)>3]
    print(a);
  • 求(x,y)  其中x是0-5之間的偶數,y是0-5之間的奇數組成的元組列表
  • b=[(x,y) for x in range(6)if x%2==0 for y in range(6)if y%2==1];
    print (b);
  • 求m中3,6,9組成的列表
  • m = [[1,2,3],[4,5,6],[7,8,9]]
    c=[row[2] for row in m];
    print(c);
  • 求m中斜線1,5,9組成的列表
  • m = [[1,2,3],[4,5,6],[7,8,9]];
    d=[m[i][i] for i in range(len(m))];
    print(d);
  • 求m,n中矩陣和元素的乘積
  • m = [[1,2,3],[4,5,6],[7,8,9]];
    n = [[2,2,2],[3,3,3],[4,4,4]]
    e=[m[i][j]*n[i][j]for i in range(len(m)) for j in range(len(m[i]))];
    print(e);
  • 若是兩個元素之間不相等的話,結合兩個列表的元素
  • m = [[1,2,3],[4,5,6],[7,8,9]];
    n = [[2,2,2],[4,4,4],[7,7,7]];
    L=[(m[i][j],n[i][j]) for i in range(3) for j in range(3)if m[i][j]!=n[i][j] ];
    print(L);

filter:string

  • filter()函數包括兩個參數,分別是function和list。該函數根據function參數返回的結果是否爲真
  • 來過濾list參數中的項,最後返回一個新列表
  • 做用是對指定序列執行進行過濾操做
  • foo = [2, 18, 9, 22, 17, 24, 8, 12, 27];
    print(list(filter(lambda x:x%3==0,foo)));

map:it

  • map函數會根據提供的函數對指定序列作映射。
  • 做用是以參數序列中的每個元素調用function函數,返回包含每次function函數返回值的list。
  • foo = [2, 18, 9, 22, 17, 24, 8, 12, 27];
    print(list(map(lambda x: x * 2 + 10, foo)));

reduce:io

  • reduce()函數會對參數序列中的元素進行累積計算。
  • import functools,_functools
    foo = [1,2,3,4,5];
    print(functools.reduce(lambda x,y:x+y,foo));#計算過程是1+2+3+4+5=15
相關文章
相關標籤/搜索