Python之幾個技巧特點

來源:互聯網
上載者:User

標籤:

今天偶然看到一篇文章<你可能不知道的30個Python語言的提點技巧>,雖然做python有幾年了,但中間還是好多不知道或沒想到,特在這裡做下摘抄.

原文地址: http://soft.chinabyte.com/database/379/12920379.shtml

1. 命名切片

>>> a = [0, 1, 2, 3, 4, 5]>>> LASTTHREE = slice(-3, None)>>> LASTTHREEslice(-3, None, None)>>> a[LASTTHREE][3, 4, 5]

2. zip 打包和解包列表

>>> a = [1, 2, 3]>>> b = [‘a‘, ‘b‘, ‘c‘]>>> z = zip(a, b)>>> z[(1, ‘a‘), (2, ‘b‘), (3, ‘c‘)]>>>>>> zip(*z)[(1, 2, 3), (‘a‘, ‘b‘, ‘c‘)]

3. 使用 zip 合并相鄰的清單項目

>>> a=[1,2,3,4,5]>>> zip(*([iter(a)]*2))[(1, 2), (3, 4), (5, 6)]
>>>
>>> zip(a[::2], a[1::2])
[(1, 2), (3, 4), (5, 6)]

可以寫成個匿名函數

group_adjacent_1 = lambda a, k:zip(*([iter(a)]*k))

group_adjacent_2 = lambda a, k:zip(*(a[i::k] for i in range(k)))

其中 a 標識要合并的列表, k 表示要合并相鄰的 k 個元素

>>> group_adjacent_1(a, 3) [(1, 2, 3), (4, 5, 6)] >>> group_adjacent_1(a, 1) [(1,), (2,), (3,), (4,), (5,), (6,)]
>>>
>>>
>>> group_adjacent_2(a, 3)
[(1, 2, 3), (4, 5, 6)]
>>> group_adjacent_2(a, 1)
[(1, 2, 3), (4, 5, 6)]

4. 使用zip和iterators產生滑動視窗

>>> from itertools import islice>>> def n_grams(a, n):...     z=(islice(a, i, None) for i in range(n))...     return zip(*z)... >>> a = [1, 2, 3, 4, 5, 6]>>> n_grams(a, 3)[(1, 2, 3), (2, 3, 4), (3, 4, 5), (4, 5, 6)]

 

Python之幾個技巧特點

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.