pythonを学び始めたとき、pythonのヒントを自分でまとめ始めました。その後、Stack Overflow
またはいくつかのオープン ソース ソフトウェアでクールなコードを見たとき、私は驚きました。これはまだ実行できることが分かりました。当時、私はこのコードを自分で試してみて、全体的なアイデアを理解した後、このコードを自分のコレクションに追加していました。実はこのブログがこのコレクションの最終部分の初公開となります。すでに Python の専門家であれば、基本的にはここでの使用法のほとんどを知っているはずですが、知らない新しいトリックも発見できるはずです。そして、あなたが C、C++、Java プログラマーであり、同時に Python も学習している場合、またはプログラミングを学んだばかりの初心者である場合は、私と同じように、特に便利で驚くべき実用的なヒントがたくさんあるはずです。以前と同じです。
すべてのテクニックと言語の使用法は例で示されるので、他の説明は必要ありません。各例を理解しやすくするために最善を尽くしましたが、読者の Python に対する精通度はさまざまであるため、まだわかりにくい部分があるかもしれません。したがって、例自体が意味が分からない場合でも、後でグーグルで検索するときに少なくとも例のタイトルが役立つでしょう。
コレクション全体は大まかに難易度別に分類されており、簡単で一般的なものが先頭にあり、より珍しいものが最後にあります。
1.1 開梱
> a, b, c = 1, 2, 3
> a, b, c
(1, 2, 3)
> ;> a, b, c = [1, 2, 3]
>> a, b, c
>(1, 2, 3)
> a, b , c = (2 * i + 1 for i in range(3)) a, b, c b, c), d = [1, (2, 3), 4]
>>> 1
>>> b
>>> c
>>> d
> gt;> ; a, b = 1, 2
>a, b = b, a
>a, b
(2, 1)
1.3 拡張アンボックス化python3)
>>> a, *b, c = [1, 2, 3, 4, 5]
>>>>>
[2, 3, 4]>>> c5 1.4 負のインデックス >>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>>> a[-1 ]10>>> a[-3]8> ;> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>>> a[2, 3, 4] , 5, 6, 7]1.6 ネガティブインデックスカットリスト>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]> ;>> a[-4:-2][7, 8] 1.7 ステップサイズのカットリストを指定します>>> a = [0, 1, 2, 3, 4, 5 、6、7、8、9、10]>>> a [::2][0、2、4、6、8、10]>>> ::3][0, 3, 6, 9]>> ;> a[2:8:2][2, 4, 6]1.8 マイナスステップサイズカットリスト >>> a = [0, 1, 2, 3, 4, 5 , 6, 7, 8, 9, 10]>>> a[::-1]; 、 9、 8、 7、 6、 5、 4、 3、 2、 1、 0 ]>>> a[::-2][10、 8、 6、 4、 2、 0 ]1.9 リストカットの割り当て>>> a = [1, 2, 3, 4, 5]>>> a[2:3] = [0, 0] >>> a[1, 2, 0, 4, 5]>>> a[1:1] = [8, 9]> a[1, 8, 9, 2, 0, 0, 4, 5] >>> a[1:-1] = []>>> 1, 5]1.10 名前付きリストの切り出し方法>>> a = [0, 1, 2, 3, 4, 5]>>> LASTTHREE = スライス(-3, なし) )>>> LASTTHREEslice(-3, None, None )>>> a[LASTTHREE][3, 4, 5]1.11 リストの圧縮と解凍反復子>>> 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')]1.12 隣接要素のリスト圧縮>>> 1, 2, 3, 4, 5, 6]>> ;> zip(*([iter(a)] * 2))[(1, 2), (3, 4), ( 5, 6)]>>> group_adjacent = lambda a , k: zip(*([iter(a)] * k))>>> group_adjacent(a, 3) [(1, 2, 3), (4, 5, 6)] >>> group_adjacent(a, 2)[(1, 2), (3, 4), (5, 6) )]>>> group_adjacent(a, 1)[(1,), (2,), (3,), (4,), (5,), (6,)]
>>> zip(a[::2], a[1::2])
[(1, 2), (3, 4), (5, 6)]
>> ;> zip(a[::3], a[1::3], a[2::3])
[(1, 2, 3), (4, 5, 6)]
> ;>> group_adjacent = lambda a, k: zip(*(a[i::k] for i in range(k)))
>>> group_adjacent(a, 3)
[( 1, 2, 3), (4, 5, 6)]
>>> group_adjacent(a, 2)
[(1, 2), (3, 4), (5, 6)]
>>> group_adjacent(a, 1)
[(1,), (2,), (3,), (4,), (5,), (6,)]
1.13コンプレッサーとイテレーターを使用して、リスト内の値ウィンドウをスライドさせます
>>> def n_grams(a, n):
... z = [iter(a[i:]) for i in range( n)]
... 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)]
>>> (a, 2)
[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
>n_grams(a, 4)
[(1, 2, 3, 4), (2, 3, 4, 5), (3, 4, 5, 6)]
1.14 コンプレッサー付き逆引き辞書
>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
>>> m.items()
[('a', 1) 、('c', 3), ('b', 2), ('d', 4)]
>>> zip(m.values(), m.keys())
[ (1, 'a'), (3, 'c'), (2, 'b'), (4, 'd')]
>>> mi = dict(zip(m.values( ), m.keys()))
>>> mi
{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
1.15 リストの展開
>>> a = [[1, 2], [3, 4], [5, 6]]
>>> リスト(itertools.chain.from_iterable(a))
[1, 2, 3, 4, 5, 6]
>>> sum(a, [])
[1, 2, 3, 4, 5, 6]
>> ;> ; [l の x の l の x]
[1, 2, 3, 4, 5, 6]
>>> a = [[[1, 2], [3, 4] ], [[5, 6], [7, 8]]]
>>> [l1 の l2 の x、l2 の x]
[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]
1.16 ジェネレータ式
>>> g = (x ** 2 in xrange(10))
>> g)
0
>次(g)
1
>>次(g)
4
>>次(g)
9
>>> sum(x ** 3 for x in xrange(10))
>>> sum(x ** 3 for x in xrange(10) 3 == 1)
408
1.17 辞書の導出
>>> m = {x: x ** 2 for x in range(5)}
>>> 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: '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 の k、m.items() の v}
{1: 'a'、2: 'b'、3: 'c'、4: 'd '}
1.19 名前付きタプル
>>> Point = collections.namedtuple('Point', ['x', 'y'])
>>> p = Point( p.x
1.0
>>> p.y
2.0
1.20 名前付きタプルを継承します
>>> クラス Point(collections.namedtuple('PointBase', ['x', 'y'])):
... __slots__ = ()
... def __add__(self, other):
... return Point(x=self.x + other.x, y=self.y + other.y)
...
> >> p = 点(x=1.0, y=2.0)
>>> q = 点(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 | 公式ウェブサイトのカスタマーサービスに問い合わせてください: http://www.lampbrother.net
PHPCMS 二次開発 http://yun.itxdl.cn/ online/phpcms/index.php?u=5
WeChat 開発 http://yun. itxdl.cn/online/weixin/index.php?u=5
モバイル インターネット サーバーサイド開発 http://yun. itxdl.cn/online/server/index.php?u=5
JavaScript講座 http://yun.itxdl.cn/online/js/index.php?u=5
CTO合宿 http://yun.itxdl.cn/online/cto/index.php?u=5
上記では、あらゆる側面を含む Python に関する 21 のヒントを紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。