ホームページ  >  記事  >  バックエンド開発  >  Python のメモ/トリック/レッスン/ニュアンス

Python のメモ/トリック/レッスン/ニュアンス

WBOY
WBOYオリジナル
2024-09-03 11:00:36702ブラウズ

Python notes/tricks/lessons/nuances

C++ のトリックの投稿をしました。私が知っているトリックについてもっと書きたいと思いました。なぜなら、C++ でコーディングしたにもかかわらず、ほとんどのトリックは Python と JS で書かれているからです。他にもたくさんありますが、とにかくここにあります。基本的な Python 構文に関する些細なことから始めますが、初心者には知られていないことがいくつかあります。それらには星 ⭐️ を付けています:

1. リスト

  • アイテムのデータ構造の順序付けられたコレクション
  • 複数のタイプを持つことができます
  • aa = ["リンゴ", 'd', 3, 9.3]

初期化:

  1. a = [1, 2]
  2. a = list()
  3. a = リスト([2, 3])
  4. [0]*5
  5. concat_list = list1 + list2

要素へのアクセス ⭐️

  • 0 ... n-1 および -n ... -1

機能

  • レン(リスト1)
  • a.append(value)
  • a.insert(index, value): インデックスに値を挿入し、すべてを右にプッシュします
  • a.pop(): 終了値を返し、それを削除します
  • a.remove(value): 値が存在しない場合は、ValueError が発生します。
  • a.clear()
  • a.reverse(): その場で反転
  • a.sort(): 元の
  • を変更します
  • b =sorted(a): オリジナルを変更しません

スライス⭐️

リストの部分配列にアクセスする簡単な方法

  • スライスリスト = a[1:5]: インデックス 1 で開始し、インデックス 5 で終了します。インデックス 5 は除外されます
  • スライスリスト = a[:3]: 0 ... 2 から
  • スライスリスト = a[1:3]: 1 から 2
  • slicedList = a[:]: リスト全体を複製します
  • スライスリスト = myList[::2]: ステップ インデックス、2 番目の項目ごと、最初から開始、基本的に i=0;i
  • slicedList = myList[::-1]: リストを反転する良い方法です

リストをコピーする

1. 浅いコピー

  • a = [1, 2, 3]
  • b = a

どちらも同じメモリ割り当てであるため、一方を変更すると他方も変更されます

2. ディープコピー ⭐️

3 つの方法:

  1. b = a.copy()
  2. b = リスト(a)
  3. b = a[:]

リストの内包表記

基本的なリストの内包概念から始めますが、すぐに簡単ではなくなります。

  • 値 = [範囲 (10) の x に対して x+1] -> [1、2、3、4、5、6、7、8、9、10]

- 値 = [x % 2 == 0 の場合、range(51) の x の x]

values = [word for word in values if len(word) > 1 and word[0] == 'a' and word[-1] == 'y']
# OR, a nicer way is ⭐️
values = [
    string
    for string in values
    if len(string) > 1
    if string[0] == 'a'
    if string[-1] == 'y'
]

ネストされたリストの内包 ⭐️

リストのリスト、または 2D 行列の平坦化
ネストされたリストの内包: 行列 (リストのリスト) の平坦化 ⭐️

例: 行列 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

values = [
    number for row in matrix for number in row
]
# first for loop then the next for loop is inside the first and so on
  • その他のリスト内包表記:
values = [
    "Even" if x % 2 == 0 
    else "Odd" 
    for x in range(10)
]
  • この構文 ->
    "偶数" if x % 2 == 0 else "奇数" は Python の多くの場所で有効です。変数に入れることもできます。これは基本的に三項演算子ですが、より冗長です

  • ⭐️ リストの内包表記を理解するには、常に式の左側と右側を見てください。ネストされたループは左から右に進みます。if else が for ループの左側にある場合、どの値をチェックしますかif else 条件に応じて挿入する必要がありますか。一方、for ループが右側にある場合は、リストからフィルタリングしようとしています

  • たとえば、5x5x5 のリストを作成するには: ⭐️

values = [[[num+1 for num in range(5)] for _ in range(5)] for _ in range(5)]

⭐️ for ループの最も外側を探します。その左側にあるものはすべてvalues[] 配列に追加されます。この構文の意味は、for _ in range(5) にあるものは何でも実行したいということです。この for ループの左側を 5 回実行します (反復ごとの反復子変数の値を気にしないため)

  • 内包表記の関数: 値 = [有効な場合、値の x には x**2(x)]

辞書の理解

ペア = [("a", 1), ("b", 2)] がある場合: ペアまたはタプルのリスト

-> my_dict = {k:v for k, v inpairs}: 値のアンパック。これが機能するには、ペアの各「ペア」に正確に 2 つのエンティティが必要です

集合内包表記

nums = [1, 2, 3, 1, 3, 2, 4, 2, 1, 3] とします

unique_nums = {x for x in nums}: キーがないため、Python はこれがセットである必要があることを認識します

時間ができたらこれを書きますが、ここで確認することができます: AdvancedPythonConcepts これは、私が初めて Python の概念を学んだときに文書化した私の git リポジトリです。時間ができたら、このリポジトリに基づいてこの記事を書きます...

以上がPython のメモ/トリック/レッスン/ニュアンスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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