1. 非常有用的 Python 技巧

        共 3331字,需瀏覽 7分鐘

         ·

        2020-12-04 17:04

        點(diǎn)擊上方Python知識(shí)大全,設(shè)為星標(biāo)

        號(hào)外:
        本號(hào)免費(fèi)提供 CSDN 資源下載,需要的伙伴公眾號(hào)后臺(tái)回復(fù)【CSDN】


        閱讀文本大概需要 5?分鐘


        近期精彩文章別這樣直接運(yùn)行Python命令,否則電腦等于“裸奔”

        來(lái)源:蘇生不惑 ? 鏈接:

        https://mp.weixin.qq.com/s/ATvPzfLHwp0wEH5-tMW2cg

        函數(shù)連續(xù)調(diào)用


        def add(x):
        class AddNum(int):
        def __call__(self, x):
        return AddNum(self.numerator + x)
        return AddNum(x)

        print add(2)(3)(5)
        # 10
        print add(2)(3)(4)(5)(6)(7)
        # 27

        # javascript 版
        var add = function(x){
        var addNum = function(x){
        return add(addNum + x);
        };

        addNum.toString = function(){
        return x;
        }
        return addNum;
        }

        add(2)(3)(5)//10
        add(2)(3)(4)(5)(6)(7)//27

        默認(rèn)值陷阱


        >>> def evil(v=[]):
        ... v.append(1)
        ... print v
        ...
        >>> evil()
        [1]

        >>> evil()
        [1, 1]

        讀寫(xiě)csv文件


        import csv

        with open('data.csv', 'rb') as f:
        reader = csv.reader(f)
        for row in reader:
        print row

        # 向csv文件寫(xiě)入
        import csv

        with open( 'data.csv', 'wb') as f:
        writer = csv.writer(f)
        writer.writerow(['name', 'address', 'age']) # 單行寫(xiě)入
        data = [
        ( 'xiaoming ','china','10'),
        ( 'Lily', 'USA', '12')]

        writer.writerows(data) # 多行寫(xiě)入

        數(shù)制轉(zhuǎn)換


        >>> int('1000', 2)
        8

        >>> int('A', 16)
        10

        格式化 json

        echo'{"k": "v"}' | python-m json.tool

        list 扁平化


        list_ = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
        [k for i in list_ for k in i] #[1, 2, 3, 4, 5, 6, 7, 8, 9]
        import numpy as np
        print np.r_[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

        import itertools
        print list(itertools.chain(*[[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
        sum(list_, [])
        flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) is list else [x]
        flatten(list_)

        list 合并


        >>> a = [1, 3, 5, 7, 9]
        >>> b = [2, 3, 4, 5, 6]
        >>> c = [5, 6, 7, 8, 9]
        >>> list(set().union(a, b, c))
        [1, 2, 3, 4, 5, 6, 7, 8, 9]

        出現(xiàn)次數(shù)最多的 2 個(gè)字母


        from collections import Counter
        c = Counter('hello world')
        print(c.most_common(2)) #[('l', 3), ('o', 2)]

        謹(jǐn)慎使用

        eval("__import__('os').system('rm -rf /')", {})

        置換矩陣


        matrix = [[1, 2, 3],[4, 5, 6]]
        res = zip( *matrix ) # res = [(1, 4), (2, 5), (3, 6)]

        列表推導(dǎo)


        [item**2 for item in lst if item % 2]
        map(lambda item: item ** 2, filter(lambda item: item % 2, lst))
        >>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
        ['1', '2', '3', '4', '5', '6', '7', '8', '9']

        排列組合


        >>> for p in itertools.permutations([1, 2, 3, 4]):
        ... print ''.join(str(x) for x in p)
        ...
        1234
        1243
        1324
        1342
        1423
        1432
        2134
        2143
        2314
        2341
        2413
        2431
        3124
        3142
        3214
        3241
        3412
        3421
        4123
        4132
        4213
        4231
        4312
        4321

        >>> for c in itertools.combinations([1, 2, 3, 4, 5], 3):
        ... print ''.join(str(x) for x in c)
        ...
        123
        124
        125
        134
        135
        145
        234
        235
        245
        345
        >>> for c in itertools.combinations_with_replacement([1, 2, 3], 2):
        ... print ''.join(str(x) for x in c)
        ...
        11
        12
        13
        22
        23
        33
        >>> for p in itertools.product([1, 2, 3], [4, 5]):
        (1, 4)
        (1, 5)
        (2, 4)
        (2, 5)
        (3, 4)
        (3, 5)

        默認(rèn)字典


        >>> m = dict()
        >>> m['a']
        Traceback (most recent call last):
        File "", line 1, in
        KeyError: 'a'
        >>>
        >>> m = collections.defaultdict(int)
        >>> m['a']
        0
        >>> m['b']
        0
        >>> m = collections.defaultdict(str)
        >>> m['a']
        ''
        >>> m['b'] += 'a'
        >>> m['b']
        'a'
        >>> m = collections.defaultdict(lambda: '[default value]')
        >>> m['a']
        '[default value]'
        >>> m['b']
        '[default value]'

        反轉(zhuǎn)字典


        >>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
        >>> m
        {'d': 4, 'a': 1, 'b': 2, 'c': 3}
        >>> {v: k for k, v in m.items()}
        {1: 'a', 2: 'b', 3: 'c', 4: 'd'}

        -END-
        推薦閱讀
        微信第 1 行代碼曝光!
        Python 下載的 11 種姿勢(shì),一種比一種高級(jí)!

        關(guān)注「Python 知識(shí)大全」,做全棧開(kāi)發(fā)工程師
        歲月有你 惜惜相處

        回復(fù) 【資料】獲取高質(zhì)量學(xué)習(xí)資料


        覺(jué)得本文對(duì)你有幫助?請(qǐng)分享給更多人
        點(diǎn)「在看」的人都變好看了哦
        瀏覽 26
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 国产9在线观看黄A片免费 | 亚洲熟女乱色综合亚洲AV | 黄网站在线观看 | 狠狠狠狠狠艹 | 国产精品久久久久久久久毛片 |