• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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
    當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

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

    來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 14:25:27
    文檔

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

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

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

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

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

    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]

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

    1.16 生成器表達(dá)式

    >>> 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 通過迭代字典反轉(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'}

    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 映射對象到唯一的序列數(shù) (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

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

    文檔

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

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

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 伊人久久精品无码二区麻豆| 北岛玲日韩精品一区二区三区| 99国产精品私拍pans大尺度| 欧美一区二区精品久久| 国产综合精品久久亚洲 | 亚洲精品欧美综合| 国产精品偷窥熟女精品视频| 精品无码三级在线观看视频| 四虎国产精品成人免费久久| 无码人妻精品一区二区| 国产精品日本欧美一区二区 | 免费精品99久久国产综合精品 | 国产99视频精品免费专区| 国产精品久久久天天影视| 亚洲AV永久无码精品| 国产人妖乱国产精品人妖| 亚洲午夜精品久久久久久人妖| 国产a视频精品免费观看| 国产欧美日本亚洲精品一5| 午夜精品一区二区三区免费视频| 国产日韩欧美精品| 婷婷久久精品国产| 国产精品一级香蕉一区| 久久久精品久久久久久| 国产精品成人A区在线观看| 国产A√精品区二区三区四区| 亚洲国产精品综合久久网络| xxx国产精品视频| 亚洲精品狼友在线播放| 国产精品一香蕉国产线看观看| 国产成人无码久久久精品一| 免费精品精品国产欧美在线| 精品成人免费自拍视频| 久久久国产精品亚洲一区| 国产区精品福利在线观看精品| 97精品国产一区二区三区| 欧美成人精品网站播放| 9999国产精品欧美久久久久久| 国产日韩精品欧美一区喷水| 久久精品麻豆日日躁夜夜躁| 亚洲国产精品无码久久久蜜芽|