ホームページ  >  記事  >  バックエンド開発  >  Python 言語の必見の 30 の機能とスキル (1)

Python 言語の必見の 30 の機能とスキル (1)

高洛峰
高洛峰オリジナル
2017-03-17 16:48:221156ブラウズ

Python を学び始めて以来、私は頻繁に使用する「トリック」のリストを維持することにしました。 「これはいける!」と思うコードを見つけたら(StackOverflow やオープンソース ソフトウェアなどで)、理解できるまで試してからリストに追加します。 。この投稿はクリーンアップされたリストの一部です。経験豊富な Python プログラマーであれば、すでに知っているものもあれば、まだ知らないものも発見できるかもしれません。あなたが Python を学習している、またはプログラミングを学び始めたばかりの C、C++、または Java プログラマーであれば、それらの多くは私と同じように非常に役立つことに気づくでしょう。

それぞれのトリックや言語の機能は、過剰な説明をせずに例を通してのみ検証できます。例をわかりやすくするように努めましたが、慣れによっては、一部の例はまだ少し複雑に見えるかもしれません。したがって、例を読んでもまだよくわからない場合は、タイトルから Google を通じて詳細な内容を取得するのに十分な情報が得られます。

リストは難易度別に並べ替えられており、よく使用される言語の機能とテクニックが先頭にあります。

1.1 分割

> a, b, c = 1, 2, 3

> a, b, c

(1, 2, 3)

> ;> a, b, c = [1, 2, 3]

>>> a, b, c

>>> c = (2 * i + 1 for i in range(3))

>>> a, b, c

>>> , c), d = [1, (2, 3), 4]

>>>gt; a

>>>b

>>>c

3

>>> d

4

1.2 変数の分割

>>> a, b = 1, 2

>>> a 、 2、 3、 4、 5]

>>> a

>>> b

>>>

5

1.4 負のインデックス

>>gt;> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>a[ - 1]

10

>>> a[-3]

8

1.5 リストスライス (a[start:

end

])

>>> 1、2、3、4、5、6、7、8、9、10]

>>> a[2:8]

[2、3、4、5、6、7]

1.6 負のインデックスを使用したリストのスライス

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

>>> -4:-2]

[7, 8]

1.7 ステップ値を持つスライスのリスト (a[start:end:step])

>>> a = [0, 1, 2, 3, 4、5、6、7、8、9、10]

>>> a[::2] [0、2、4、6、8、10]

>>> ; a[::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]

[10, 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, 0, 4, 5]

>>> a[1:1] = [8, 9]

> >> a

[1, 8, 9, 2, 0, 0, 4, 5]

>>> a[1:-1] = []

> a

[1, 5]

1.10 名前付きスライス(slice(start, end, step))

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

> >> LASTTHREE = スライス(-3, なし)

>>> LASTTHREE

スライス(-3, なし, なし)

>[LASTTHREE]

[ 3, 4, 5]

1.11

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

1.12 zip結合并相邻の列表を使用します

>>> a = [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 zip和イテレータを使用して生成滑動窗口 ( n -grams)

>>> itertools から 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)]

>>> n_grams(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 使用zip反转字典

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


以上がPython 言語の必見の 30 の機能とスキル (1)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。