<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        必看的的30個Python語言的特點技巧(2)

        來源:懂視網 責編:小采 時間:2020-11-27 14:25:27
        文檔

        必看的的30個Python語言的特點技巧(2)

        必看的的30個Python語言的特點技巧(2):從我開始學習http://www.gxlcms.com/wiki/1514.html target=_blank
        推薦度:
        導讀必看的的30個Python語言的特點技巧(2):從我開始學習http://www.gxlcms.com/wiki/1514.html target=_blank

        從我開始學習http://www.gxlcms.com/wiki/1514.html" target="_blank">Python時我就決定維護一個經常使用的“竅門”列表。不論何時當我看到一段讓我覺得“酷,這樣也行!”的代碼時(在一個例子中、在StackOverflow、在開源碼軟件中,等等),我會嘗試它直到理解它,然后把它添加到列表中。這篇文章是清理過列表的一部分。如果你是一個有經驗的Python程序員,盡管你可能已經知道一些,但你仍能發現一些你不知道的。如果你是一個正在學習Python的C、C++或Java程序員,或者剛開始學習編程,那么你會像我一樣發現它們中的很多非常有用。

        每個竅門或語言特性只能通過實例來驗證,無需過多解釋。雖然我已盡力使例子清晰,但它們中的一些仍會看起來有些復雜,這取決于你的熟悉程度。所以如果看過例子后還不清楚的話,標題能夠提供足夠的信息讓你通過Google獲取詳細的內容。

        列表按難度排序,常用的語言特征和技巧放在前面。

        1.15 攤平列表:

        >>> a = [[1, 2], [3, 4], [5, 6]]

        >>> list(itertools.chain.from_iterable(a))

        [1, 2, 3, 4, 5, 6]

        >>> sum(a, [])

        [1, 2, 3, 4, 5, 6]

        >>> [x for l in a for x in l]

        [1, 2, 3, 4, 5, 6]

        >>> a = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]

        >>> [x for l1 in a for l2 in l1 for x in l2]

        [1, 2, 3, 4, 5, 6, 7, 8]

        >>> a = [1, 2, [3, 4], [[5, 6], [7, 8]]]

        >>> flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) is list else [x]

        >>> flatten(a)

        [1, 2, 3, 4, 5, 6, 7, 8]

        注意: 根據Python的文檔,itertools.chain.from_iterable是首選。

        1.16 生成器表達式

        >>> g = (x ** 2 for x in xrange(10))

        >>> next(g)

        0

        >>> next(g)

        1

        >>> next(g)

        4

        >>> next(g)

        9

        >>> sum(x ** 3 for x in xrange(10))

        2025

        >>> sum(x ** 3 for x in xrange(10) if x % 3 == 1)

        408

        1.17 迭代字典

        >>> m = {x: x ** 2 for x in range(5)}

        >>> m

        {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

        >>> m = {x: 'A' + str(x) for x in range(10)}

        >>> m

        {0: 'A0', 1: 'A1', 2: 'A2', 3: 'A3', 4: 'A4', 5: 'A5', 6: 'A6', 7: 'A7', 8: 'A8', 9: 'A9'}

        1.18 通過迭代字典反轉字典

        >>> 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'}

        1.19 命名序列 (collections.namedtuple)

        >>> Point = collections.namedtuple('Point', ['x', 'y'])

        >>> p = Point(x=1.0, y=2.0)

        >>> p

        Point(x=1.0, y=2.0)

        >>> p.x

        1.0

        >>> p.y

        2.0

        1.20 命名列表的繼承:

        >>> class Point(collections.namedtuple('PointBase', ['x', 'y'])):

        ... slots = ()

        ... def add(self, other):

        ... return Point(x=self.x + other.x, y=self.y + other.y)

        ...

        >>> p = Point(x=1.0, y=2.0)

        >>> q = Point(x=2.0, y=3.0)

        >>> p + q

        Point(x=3.0, y=5.0)

        1.21 集合及集合操作

        >>> A = {1, 2, 3, 3}

        >>> A

        set([1, 2, 3])

        >>> B = {3, 4, 5, 6, 7}

        >>> B

        set([3, 4, 5, 6, 7])

        >>> A | B

        set([1, 2, 3, 4, 5, 6, 7])

        >>> A & B

        set([3])

        >>> A - B

        set([1, 2])

        >>> B - A

        set([4, 5, 6, 7])

        >>> A ^ B

        set([1, 2, 4, 5, 6, 7])

        >>> (A ^ B) == ((A - B) | (B - A))

        True

        1.22 多重集及其操作 (collections.Counter)

        >>> A = collections.Counter([1, 2, 2])

        >>> B = collections.Counter([2, 2, 3])

        >>> A

        Counter({2: 2, 1: 1})

        >>> B

        Counter({2: 2, 3: 1})

        >>> A | B

        Counter({2: 2, 1: 1, 3: 1})

        >>> A & B

        Counter({2: 2})

        >>> A + B

        Counter({2: 4, 1: 1, 3: 1})

        >>> A - B

        Counter({1: 1})

        >>> B - A

        Counter({3: 1})

        1.23 迭代中最常見的元素 (collections.Counter)

        >>> A = collections.Counter([1, 1, 2, 2, 3, 3, 3, 3, 4, 5, 6, 7])

        >>> A

        Counter({3: 4, 1: 2, 2: 2, 4: 1, 5: 1, 6: 1, 7: 1})

        >>> A.most_common(1)

        [(3, 4)]

        >>> A.most_common(3)

        [(3, 4), (1, 2), (2, 2)]

        1.24 雙端隊列 (collections.deque)

        >>> Q = collections.deque()

        >>> Q.append(1)

        >>> Q.appendleft(2)

        >>> Q.extend([3, 4])

        >>> Q.extendleft([5, 6])

        >>> Q

        deque([6, 5, 2, 1, 3, 4])

        >>> Q.pop()

        4

        >>> Q.popleft()

        6

        >>> Q

        deque([5, 2, 1, 3])

        >>> Q.rotate(3)

        >>> Q

        deque([2, 1, 3, 5])

        >>> Q.rotate(-3)

        >>> Q

        deque([5, 2, 1, 3])

        1.25 有最大長度的雙端隊列 (collections.deque)

        >>> last_three = collections.deque(maxlen=3)

        >>> for i in xrange(10):

        ... last_three.append(i)

        ... print ', '.join(str(x) for x in last_three)

        ...

        0

        0, 1

        0, 1, 2

        1, 2, 3

        2, 3, 4

        3, 4, 5

        4, 5, 6

        5, 6, 7

        6, 7, 8

        7, 8, 9

        1.26 字典排序 (collections.OrderedDict)

        >>> m = dict((str(x), x) for x in range(10))

        >>> print ', '.join(m.keys())

        1, 0, 3, 2, 5, 4, 7, 6, 9, 8

        >>> m = collections.OrderedDict((str(x), x) for x in range(10))

        >>> print ', '.join(m.keys())

        0, 1, 2, 3, 4, 5, 6, 7, 8, 9

        >>> m = collections.OrderedDict((str(x), x) for x in range(10, 0, -1))

        >>> print ', '.join(m.keys())

        10, 9, 8, 7, 6, 5, 4, 3, 2, 1

        1.27 缺省字典 (collections.defaultdict)

        >>> m = dict()

        >>> m['a']

        Traceback (most recent call last):

        File "<stdin>", line 1, in <module>

        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]'

        1.28 用缺省字典表示簡單的樹

        >>> import json

        >>> tree = lambda: collections.defaultdict(tree)

        >>> root = tree()

        >>> root['menu']['id'] = 'file'

        >>> root['menu']['value'] = 'File'

        >>> root['menu']['menuitems']['new']['value'] = 'New'

        >>> root['menu']['menuitems']['new']['onclick'] = 'new();'

        >>> root['menu']['menuitems']['open']['value'] = 'Open'

        >>> root['menu']['menuitems']['open']['onclick'] = 'open();'

        >>> root['menu']['menuitems']['close']['value'] = 'Close'

        >>> root['menu']['menuitems']['close']['onclick'] = 'close();'

        >>> print json.dumps(root, sort_keys=True, indent=4, separators=(',', ': '))

        {

        "menu": {

        "id": "file",

        "menuitems": {

        "close": {

        "onclick": "close();",

        "value": "Close"

        },

        "new": {

        "onclick": "new();",

        "value": "New"

        },

        "open": {

        "onclick": "open();",

        "value": "Open"

        }

        },

        "value": "File"

        }

        }

        (到https://gist.github.com/hrldcpr/2012250查看詳情)

        1.29 映射對象到唯一的序列數 (collections.defaultdict)

        >>> import itertools, collections

        >>> value_to_numeric_map = collections.defaultdict(itertools.count().next)

        >>> value_to_numeric_map['a']

        0

        >>> value_to_numeric_map['b']

        1

        >>> value_to_numeric_map['c']

        2

        >>> value_to_numeric_map['a']

        0

        >>> value_to_numeric_map['b']

        1

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        必看的的30個Python語言的特點技巧(2)

        必看的的30個Python語言的特點技巧(2):從我開始學習http://www.gxlcms.com/wiki/1514.html target=_blank
        推薦度:
        標簽: 特點 技巧 語言
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲一级高清在线中文字幕| 亚洲精品国产日韩无码AV永久免费网| 亚洲精品乱码久久久久66| 亚洲av永久中文无码精品| 一个人看的www在线观看免费| 亚洲av中文无码乱人伦在线播放| 国产精品小视频免费无限app| 免费在线观看毛片| 亚洲AV无码成人精品区狼人影院 | 一级一级毛片免费播放| 成年女人毛片免费观看97| 亚洲色欲色欲www| 免费观看美女用震蛋喷水的视频 | 中文字幕久精品免费视频| 国产亚洲?V无码?V男人的天堂 | 亚洲av激情无码专区在线播放 | 午夜精品射精入后重之免费观看| 亚洲小说区图片区另类春色| 国产福利在线观看永久免费| 亚洲色精品aⅴ一区区三区| 99精品全国免费观看视频..| 亚洲VA成无码人在线观看天堂| 中文字幕免费在线视频| 亚洲成a人片在线观看无码| 国产无遮挡无码视频免费软件| 国产偷v国产偷v亚洲高清| 亚欧免费无码aⅴ在线观看| 亚洲邪恶天堂影院在线观看| **俄罗斯毛片免费| 亚洲中文字幕久久精品无码A| 好爽又高潮了毛片免费下载| 久久精品国产亚洲av瑜伽| 亚洲国产婷婷香蕉久久久久久| 国产黄在线播放免费观看| 狠狠色伊人亚洲综合成人| 91av免费观看| 亚洲暴爽av人人爽日日碰| 亚洲人成无码久久电影网站| 免费在线看黄网站| 亚洲娇小性色xxxx| 亚洲伊人久久综合中文成人网 |