Pythonを自分で学習するためのこの一連のメモ、エラーがある場合は、訂正してください
機能の一覧表示
シーケンスは、一連のデータを格納するために使用されるデータ格納方法です。メモリ内では、シーケンスは複数の値を格納するために使用されるブロックです継続的メモリスペース。たとえば、整数シーケンス[10,20,30,40]の合計は、次のように概略的に表すことができます。
python3のすべてがオブジェクトであるため、実際には次の方法でメモリに保存されます。
a = [10,20,30,40]
この図から、整数オブジェクトの値ではなく、整数オブジェクトのアドレスがシーケンスに格納されていることがわかります。Pythonで一般的に使用されるシーケンス構造は次のとおりです。文字列リストメタ祖先辞書コレクション。
リストの紹介
リスト:任意の数とタイプのデータ収集を保存するために使用されます
このリストには、複数の要素を含む整然とした連続したメモリ空間である変数シーケンスが組み込まれています。リスト定義の標準構文形式:
a = [10,20,30,40]
それらの中で、10 20 3040は呼ばれます:リストの要素a
リスト内の要素は、さまざまなタイプにすることができます。といった:
a = [10,20、 'abc'、True]
リストオブジェクトの一般的なメソッド:
方法 | ポイント | 説明 |
---|---|---|
list.append(x) | 要素を追加する | リストの最後に要素xを追加します |
list.extend(aLIst) | 要素を追加する | リストのすべての要素をリストの最後に追加します |
list.insert(index、x) | 要素を追加する | リスト内の指定された位置インデックスに要素xを挿入します |
list.remove(x) | 要素を削除 | リスト内の指定された要素xの最初の出現を削除します |
list.pop(x) | 要素を削除 | リストの指定された位置インデックスにある要素を削除して返します |
list.pop([index]) | 要素を削除 | リストの指定された位置インデックスにある要素を削除して返します。デフォルトは最後の要素です |
list.clear() | すべての要素を削除します | リストオブジェクトを削除するのではなく、リストのすべての要素を削除します |
list.index(x) | アクセス要素 | 最初のxのインデックス位置を返し、x要素がない場合は例外をスローします |
list.count(x) | カウント | 指定された要素xがリストに表示される回数を返します |
亜麻(リスト) | リストの長さ | リスト内の要素の数を返します |
list.reverse() | フリップリスト | すべての要素が所定の位置に反転します |
list.sort() | ソート | すべての要素を所定の位置に並べ替えます |
list.copy() | 浅いコピー | リストオブジェクトの浅いコピーを返す |
Pythonのリストサイズは可変であり、必要に応じて増減します
文字列とリストはどちらもシーケンスタイプであり、文字列は文字シーケンス、リストは任意の要素のシーケンス。
リストの作成
基本構文の作成[]
a = [10,20,'slp','sx']
a=[] #创建一个空的列表对象
list()作成
list()を使用して、反復可能なデータをリストに変換します
a =list()# 创建一个空的列表对象
a = list(range(10))
a = list('slp,sx')
range()は整数のリストを作成します
range()は、整数のリストを非常に便利に作成するのに役立ちます:range([start]、end、[step])
- start:オプションの開始番号デフォルト0
- 終了:必要な終了番号
- step:オプションは、ステップサイズがデフォルトで1であることを意味します
python3のRange()は、リストではなく範囲オブジェクトを返します。listメソッドを使用してリストオブジェクトに変換する必要があります。
包括的に生成されたリスト
使用リスト内包表記は、開発でよく使用されるデータの作成に非常に便利です。ただし、forループとifステートメントが原因です
a = [x*2 for x in range(5)] #循环创建多个元素
a = [x*2 for x in range(100) if x%9==0] #通过if过滤元素
リスト要素の追加と削除
リストが要素を追加および削除すると、リストは自動的にメモリ管理を実行するため、プログラマーの負担が大幅に軽減されます。ただし、この機能にはリスト要素の多数の移動が含まれるため、非効率的です。卒業しない限り、通常はリストの最後に要素を追加するだけです。これにより、リストの効率が大幅に向上します。
append()メソッド
リストオブジェクトを適切に変更することは、リストの最後に新しい要素を追加するための最速の方法です。推奨用途
a = [20,40]
a.append(80)
+オペレーター操作
実際には最後に要素を追加するのではなく、新しいリストオブジェクトを作成します。元のリストの要素と新しいリストの要素を順番に新しいリストオブジェクトにコピーします。このように、多数のコピー操作が含まれるため、多数の要素を操作することはお勧めしません。
a = [20,40]
id(a) #46016027
a = a+[50]
id(a)# 46015432
上記から、のアドレスが変更されました。つまり、新しいリストオブジェクトが作成されます。
extend()メソッド
ターゲットリストのすべての要素をこのリストの最後に追加することは、その場での操作であり、新しいリストオブジェクトを作成することはありません。
a = [20,40]
a.extend([50,60])
insert()要素を挿入
insert()メソッドを使用して、指定された要素をリストオブジェクトの指定された位置に挿入します。これにより、すべての要素が挿入位置の後ろに移動し、処理速度に影響します。多数の要素が関係する場合は、それらを使用しないようにしてください。この種の移動の関数と同様に、remove()pop()del()があります。これらは、テール以外の要素を削除するときに、操作位置の後ろに要素を移動します。
乗算拡張
乗算を使用してリストを展開し、新しいリストを生成します。新しいリスト要素は、元のリスト要素を複数回繰り返したものです。
乗算演算にも適しています:文字列の祖先。
デル削除
リストの指定された位置にある要素を削除します(基本的な原則は引き続き配列のコピーです)
a = [10,20,30]
del a[1] #删除第一个元素,下标是从0开始的
pop()メソッド
pop()は、指定された位置にある要素を削除して返します。位置が指定されていない場合、リストの最後の要素がデフォルトで操作されます。
a = [10,20,30]
a.pop() #30
削除する()
初めて表示される指定された要素を削除し、要素が存在しない場合は例外をスローします
a=[10,20,10,30]
a.remove(10) #[20,10,30]
リスト要素へのアクセスと数
インデックスを介した要素への直接アクセス
インデックスを介して要素に直接アクセスできます。インデックスの範囲は[0、リストの長さ-1]の範囲です。この範囲を超えると、例外がスローされます。
index()リスト内の指定された要素の最初の出現のインデックスを取得します
index()は、指定された要素の最初の出現のインデックス位置を取得できます。構文はindex(value、[start、[end]])です。ここで、startとendは検索範囲を指定します。
count()指定された要素がリストに表示される回数を取得します
count()は、指定された要素がリストに表示される回数を返すことができます
a = [10,20,10,30]
a.count(10) #2
len()はリストの長さを返します
len()は、要素の数であるリストの長さを返します
会員判断
リストに指定された要素があるかどうかを判断するには、count()メソッドを使用できます。0が返された場合は存在しないことを意味します。0より大きい場合は存在することを意味しますが、通常は判断するキーワードがより簡潔になり、TrueまたはFalseを直接返します
a = [10,20,40]
10 in a #True
スライス操作
スライスはPythonシーケンスとその重要な操作であり、リスト、メタ祖先、文字列などに適しています。
スライスの形式は次のとおりです。
[開始オフセット開始と終了オフセット終了[:ステップ長]]
一般的な操作は次のとおりです(パラメーターが正の場合)。
操作と手順 | 例 | 結果 |
---|---|---|
[:]リスト全体を抽出します | [10,20,30] [:] | [10、20、30] |
[開始:開始インデックスから終了まで] | [10,20,30] [1:] | [20,30] |
[:end]最初から最後まで-1 | [10,20,30] [:2] | [10,20] |
[start:end]最初から最後まで-1 | [10,20,30,40] [1:3] | [20,30] |
[start:end:step]開始から終了-1まで抽出します。ステップの長さはstepです。 | [10,20,30,40,50,60,60] [1:6:2] | [20、40、60] |
その他の操作(3つの数量は負です):
例 | 説明 | 結果 |
---|---|---|
[10,20,30,40,50,60,70] [-3:] | 最後の3つ | [50、60、70] |
[10、20、30、40、50、60、70] [-5:-3] | 下から5番目から下から3番目(ヘッダーにはテールは含まれません) | [30,40] |
[10,20,30,40,50,60,70] [::-1] | ステップサイズは負であり、抽出は右から左に逆になります | [70、60、50、40、30、20、10] |
スライス操作中、開始オフセットと終了オフセットが[0、文字列長-1]の範囲内になく、エラーなし、0未満の開始は0と見なされ、長さ-1より大きい終了は-1と見なされます。
リストトラバーサル
for i in listObj:
doSomething()
リストのすべての要素を新しいリストオブジェクトにコピーします
次のコードはリスト要素のコピーを実装していますか?
list1 = [30,40,50]
list2 = list1
list2をリストオブジェクトにポイントするだけです。つまり、list2とlist1は同じアドレス値を保持します。リスト要素自体はコピーされません。
リストの並べ替え
元のリストを変更し、新しいリストの並べ替えを作成しないでください
a = [20,10,30,40]
id(a)
a.sort() #默认是升序
a.sort(reerse=True) #降序排列
random.shuffle(a) #打乱顺序
新しいリストの並べ替え
==組み込み関数sorted()==で並べ替えることもできます。このメソッドは、新しいリストを返します。
a = [20,10,30,40]
id(a)
a = sorted(a) # 内置函数 会生成新的列表,所以下方id函数的返回值会变掉
id(a)
reverse()はイテレータを返します
組み込みのreversed()は、逆ソートもサポートしています。リストオブジェクトのreversed()メソッドとは異なり、組み込みのreversed()は元のリストを変更しませんが、逆の順序でソートされたイテレータオブジェクトを返します。
a = [20,10,30,40]
c = reversed(a)
list(c) #C是一个迭代器对象,需要转换一下 迭代器只能用一次 转换一次之后就不能再用了
組み込みの他の関数に関連する要約を一覧表示します
最大および最小
リスト内の最大値と最小値を返します
和
数値リストのすべての要素に対して合計演算を実行すると、非数値リスト演算の場合はエラーが報告されます
多次元リスト
二次元リスト
1次元リストは、1次元を格納するのに役立ちます。線形データ
2次元リストは、2次元の表形式のデータを保存するのに役立ちます
a = [
['高小一',18,30000,'北京'],
['高小二',19,40000,'上海'],
['高小五',20,1000,'深圳']
]
メモリ構造図:
WeChatで[Zixin]を検索するか、以下のQRコードをスキャンして、友達を作り、一緒に進歩してください。記事は継続的に更新されます。現在、Python百戦の研究ノートを整理しており、今後のアップデートを楽しみにしています。