Pythonに組み込まれている4つの一般的なデータ構造:list、tuple、dict、set。
これらの4つのデータ構造は、複数のデータ項目を保存するために使用できます。これは、プログラムがデータを保存するために単一の変数を使用する必要があるだけでなく、大量のデータを保存するために複数のデータ構造を使用する必要があるため、プログラミングにとって非常に重要です。リスト、タプル、辞書、コレクションは、大量のデータを保存するニーズを満たすことができます。
リスト(リスト)とタプル(タプル)は似ており、どちらも要素を順番に格納し、各要素には独自のインデックスがあるため、リストとタプルの両方がインデックスによって要素にアクセスできます。 2つの違いは、タプルは変更できませんが、リストは変更できることです。
ディクショナリ(dict)はセット(set)に似ており、保存するデータはすべて順不同であり、ディクショナリはデータをキー値の形式で保存します
詳細なPythonシーケンス
いわゆるシーケンスとは、複数の値を格納できる連続したメモリ空間を指します。これらの値は特定の順序で配置され、各値が配置されている番号(インデックスと呼ばれる)を介してアクセスできます。
正のインデックス値であるか負のインデックス値であるかに関係なく、シーケンス内の任意の要素にアクセスできます。
列シーケンスの各要素のインデックス値として負の値を使用する場合、0からではなく-1から始まることに注意してください。
[ root@kube list]# cat demo1.py
str="Pyシリアル化の詳細"print(str[0],"---",str[-6])print(str[5],"---",str[-1])[root@kube list]# py demo1.py
P --- y
詳細---解決
[ root@kube list]#
シーケンススライス
スライス操作は、シーケンス内の要素にアクセスするもう1つの方法であり、特定の範囲の要素にアクセスできます。スライス操作を介して、新しいシーケンスを生成できます。
スライス操作を実装するためのシーケンスの構文形式は次のとおりです。
sname[start : end : step]
その中で、各パラメーターの意味は次のとおりです。
sname:シーケンスの名前を示します。
start:スライスの開始インデックス位置(この位置を含む)を示します。このパラメーターは未指定のままにすることもできます。デフォルトは0、つまりシーケンスの先頭からのスライスです。
end:スライスの終了インデックス位置(この位置を含まない)を示します。指定されていない場合、デフォルトはシーケンスの長さです。
ステップ:スライスプロセスでは、要素はいくつかの保存場所(現在の位置を含む)ごとに1回取得されます。つまり、ステップの値が1より大きい場合、要素をシーケンスするためにスライスするときに要素は「ジャンプ」されます。 。 stepの値を省略すると、最後のコロンを省略できます。
[ root@kube list]# cat demo2.py
str="pyシーケンススライス"print(str[:0]) #end is 0は、終了インデックス位置を意味しますが、この位置は含まれません,とても空
print(str[:1])print(str[:2])print(str[1:2])
num="123456789"print(num[1:5:2]) #1で-5の間隔で2桁ごとに値を取ります
[ root@kube list]# py demo2.py
p
py
y
24[ root@kube list]#
シーケンスの追加
Pythonでは、「+」演算子を使用して同じタイプの2つのシーケンスがサポートされ、2つのシーケンスが接続されますが、重複する要素は削除されません。
ここでいう「同じタイプ」とは、「+」演算子の両側のシーケンスが、シーケンスタイプ、タプルタイプ、または文字列のいずれかであることを意味します。
root@kube list]# cat demo3.py
print("こんにちは"+"私は大丈夫です"+"dajiahao")[root@kube list]# py demo3.py
こんにちは私の良いダジアハオ
[ root@kube list]#
シーケンス乗算
Pythonでは、シーケンスに数値nを掛けると、元のシーケンスがn回繰り返された結果である内容の新しいシーケンスが生成されます。
[ root@kube list]# cat demo3.py
str="こんにちは"+"私は大丈夫です"+"dajiahao"print(str*3)[root@kube list]# py demo3.py
こんにちは私の良いダジアハオこんにちは私の良いダジアハオこんにちは私の良いダジアハオ
[ root@kube list]#
要素がシーケンスに含まれているかどうかを確認します
Pythonでは、inキーワードを使用して、要素がシーケンスのメンバーであるかどうかを確認できます。構文形式は次のとおりです。
value in sequence
inキーワードと同じ使用法ですが、逆の機能があります。notinキーワードもあり、指定されたシーケンスに要素が含まれていないかどうかをチェックします。
value not in sequence
[ root@kube list]# cat demo4.py
# coding:utf-8
str="test.com.cn"print('e'in str)print('e' not in str)[root@kube list]# py demo4.py
True
False
[ root@kube list]#
シーケンスに関連する組み込み関数
Pythonには、シーケンスに関連するいくつかの一般的な操作を実装するために使用できるいくつかの組み込み関数(表3を参照)が用意されています。
表3シーケンス関連の組み込み関数
機能 | 機能 |
---|---|
len() | シーケンスの長さを計算します。つまり、シーケンスに含まれる要素の数を返します。 |
max() | シーケンス内で最大の要素を見つけます。シーケンスでsum()関数を使用する場合、加算操作は文字や文字列ではなく数字でなければならないことに注意してください。そうしないと、インタープリターが連結操作(+演算子)を実行するかどうかを判断できないため、関数は例外をスローします。 2つのシーケンスを接続するか、追加操作を行うことができます。 |
min() | シーケンス内の最小要素を見つけます。 |
list() | シーケンスをリストに変換 |
str() | シーケンスを文字列に変換します。 |
sum() | 要素の合計を計算します。 |
sort() | 要素をソートします。 |
reverse() | シーケンス内の要素を逆にします。 |
enumerate() | シーケンスをインデックスシーケンスに結合します。これは主にforループで使用されます。 |
[ root@kube list]# cat demo5.py
str="test.com.cn"print(max(str))print(min(str))print(len(str))print(list(str))[root@kube list]# py demo5.py
t
.11[' t','e','s','t','.','c','o','m','.','c','n'][root@kube list]#
pythonリストリスト
Pythonには配列はありませんが、より強力なリストが追加されています。配列をコンテナと考えると、Pythonリストはファクトリのウェアハウスです。
正式な観点から、リストはすべての要素を角括弧[]のペアに入れ、隣接する要素はコンマで区切られます。形式では、element1〜elementnはリスト内の要素を表し、Pythonである限り、数は無制限です。サポートされているデータタイプは問題ありません。次のように
[ element1,element2,element3,...,elementn]
[ root@kube list]# cat demo6.py
lt=['c.test.com',1,[2,3],2.34,'aa']print(lt)print(type(lt))[root@kube list]# py demo6.py
[' c.test.com',1,[2,3],2.34,'aa']<class'list'[root@kube list]#
リストを作成
[ root@kube list]# cat demo7.py
lt=[1,'x.test.com',[2,3]] # =番号割り当ての使用[]同封
str="1234test"print(type(lt))print(type(str))
lt2=list(str) #使用リスト()関数変換
print(lt2)print(type(lt2))[root@kube list]# py demo7.py
< class'list'<class'str'['1','2','3','4','t','e','s','t']<class'list'[root@kube list]#
pythonアクセスおよびリストの削除
[ root@kube list]# cat demo8.py
vol=[1,'test.com',[3,4,5],44,'fff','ee']print(vol[:1])print(vol[:2])print(vol[2:4])
del vol
print(vol)[root@kube list]# py demo8.py
[1][1,' test.com'][[3,4,5],44]Traceback(most recent call last):
File "demo8.py", line 6,in<module
print(vol)
NameError: name 'vol' is not defined
[ root@kube list]#
pythonリストリストに要素を追加する3つの方法
append()メソッドは、リストの最後に要素を追加するために使用されます。このメソッドの構文は次のとおりです。
listname.append(obj)
もちろん、追加されたリストまたはタプルを全体として処理せず、リスト内の要素のみを追加する場合は、リストによって提供されるextend()メソッドを使用できます。 extends()メソッドの構文形式は次のとおりです。
listname.extend(obj)
リストの途中に要素を追加する場合は、リストのinsert()メソッドを使用できます。このメソッドの構文形式は次のとおりです。
listname.insert(index , obj)
その中で、indexパラメータは、要素がリスト内の指定された位置に挿入されるインデックス値を参照します。
挿入されたオブジェクトがリストであるかタプルであるかに関係なく、append()メソッドと同様に、insert()メソッドを使用して要素をリストに挿入します。これは、全体として要素としてのみ見なされます。
[ root@kube list]# cat demo9.py
a_list=['test.com.cn',2,[2,'a']]
a_list.append('b')print(a_list)
a_list.extend([9,8,7])print(a_list)
a_list.insert(4,'MM')print(a_list)[root@kube list]# py demo9.py
[' test.com.cn',2,[2,'a'],'b']['test.com.cn',2,[2,'a'],'b',9,8,7]['test.com.cn',2,[2,'a'],'b','MM',9,8,7][root@kube list]#
pythonリストの要素を削除する3つの方法
リストからの要素の削除は、主に次の3つのアプリケーションシナリオに分けられます。
1 ターゲット要素の場所のインデックス値に従って削除します。delステートメントを使用できます。
2 要素の値に従って削除するには、リスト(リストタイプ)によって提供されるremove()メソッドを使用します。
3 リスト内のすべての要素を削除するには、リスト(リストタイプ)によって提供されるclear()メソッドを使用します。
pythonリスト変更要素
リストの要素は変数と同等であるため、プログラムはリストの要素に値を割り当てることができるため、リストの要素を変更できます
スライスも使用できます
[ root@kube list]# cat demo11.py
a_list=list(range(0,10)) #list()関数をリストに変換する
print(a_list)
a_list[2]='a' #シーケンス2の値を置き換えます
print(a_list)
a_list[-1]='ffff' #交換シーケンスは-1つの値
print(a_list)
a_list[3:4]=['s','d'] #シャード3を交換してください-4の値
print(a_list)
a_list[4:6]=[] #4を入れる-6の値を空に置き換えます
print(a_list)
a_list[1:3]='test' #スライス構文を使用してリストに値を割り当てる場合、単一の値を使用することはできません。文字列の割り当てを使用する場合、Pythonは文字列をシーケンスとして自動的に扱います。各文字は要素です。
print(a_list)
a_list[2:6:2]=['MM','NN'] #スライス構文を使用して値を割り当てる場合、stepパラメーターを指定することもできます。ただし、stepパラメーターを指定する場合、割り当てられるリスト要素の数は、置き換えられるリスト要素の数と同じである必要があります。
print(a_list)[root@kube list]# py demo11.py
[0,1,2,3,4,5,6,7,8,9][0,1,' a',3,4,5,6,7,8,9][0,1,'a',3,4,5,6,7,8,'ffff'][0,1,'a','s','d',4,5,6,7,8,'ffff'][0,1,'a','s',5,6,7,8,'ffff'][0,'t','e','s','t','s',5,6,7,8,'ffff'][0,'t','MM','s','NN','s',5,6,7,8,'ffff'][root@kube list]#
Pythonリストの一般的なメソッド
要素の追加、要素の削除、および要素の変更の以前の方法に加えて、リストにはいくつかの一般的に使用される方法も含まれています。
count()メソッド。このメソッドは、リスト内の要素の出現回数をカウントするために使用されます。
listname.count(obj)
index()メソッドは、要素がリストに表示される位置(つまり、インデックス)を見つけるために使用されます。要素が表示されない場合、ValueErrorが発生します。このメソッドの基本的な構文形式は次のとおりです。
listname.index(obj,start,end)
count()メソッドとは異なり、index()メソッドをstartパラメーターとendパラメーターに渡して、リストの指定された範囲内の要素を検索することもできます。
pop()メソッドは、リスト内の指定されたインデックスにある要素を削除します。指定されていない場合、リスト内の最後の要素はデフォルトで削除されます。このメソッドの基本的な構文形式は次のとおりです。
listname.pop(index)
reverse()メソッドは、リスト内のすべての要素を逆に格納します。このメソッドの基本的な構文形式は次のとおりです。
listname.reverse()
sort()メソッドはリスト要素をソートするために使用され、元のリスト内の要素の順序はソート後にのみ変更されます。 sort()メソッドの構文形式は次のとおりです。
listname.sort(key=None, reserse=False)
ご覧のとおり、他のメソッドとは異なり、このメソッドにはさらに2つのパラメーターがあります。それらの機能は次のとおりです。
keyパラメータは、各要素から比較するキーを抽出するように指定するために使用されます。たとえば、この方法を使用する場合、key = str.lowerを設定すると、並べ替え時に大文字と小文字が区別されなくなります。
reverseパラメータは、並べ替えを逆にする必要があるかどうかを設定するために使用されます。デフォルトのFalseは、最小から最大への並べ替えを意味します。このパラメータがTrueに設定されている場合、最大から最小へと並べ替えられます。
次のコードは、リストを「スタック」として使用する例を示しています。
stack =[]
# 3つの要素をスタックに「プッシュ」します
stack.append("fkit")
stack.append("crazyit")
stack.append("Charlie")print(stack) # ['fkit','crazyit','Charlie']
# 最初のポップ:スタックにプッシュされた最後の要素がスタックから削除されます
print(stack.pop())print(stack) # ['fkit','crazyit']
# もう一度ポップ
print(stack.pop())print(stack) # ['fkit']
pythonrangeは番号のリストをすばやく初期化します
ython range()関数は、一連の数値を簡単に生成できます。たとえば、range()を使用して、次のように一連の数値を出力できます。
[ root@kube list]# cat demo14.py
# coding:utf-8
seq=[]for i inrange(1,4): #1を見つける-3の製品
vol=i**2
seq.append(vol)print(seq)print('----------------------------')print(type([1,2,3,4])) #範囲の型変換
print(type(range(1,5)))[root@kube list]# py demo14.py
[1,4,9]- - - - - - - - - - - - - - - - - - - - - - - - - - - - < class'list'<class'range'[root@kube list]#
pythonリストリスト実装スタックとキュー
キューとスタックは2つのデータ構造です。変数は内部に固定された順序で格納されます。2つの違いはデータアクセスの順序にあります。
キューでは、最初に格納されたデータが最初に取り出されます。つまり、「ファーストイン、ファーストアウト」です。
スタックとは、最後に保存されたデータが最初に取り出される、つまり「ラストイン、ファーストアウト」です。
リストタイプのデータ自体のストレージは順序付けられており、内部要素はさまざまなタイプである可能性があることを考慮すると、キューとスタックの実装に非常に適しています。このセクションでは、リストタイプ変数を使用してキューとスタックを実装する方法を示します。
pythonリストリストの実装
リストを使用してキュー関数をシミュレートする方法は、リスト変数を定義し、データを格納するときにinsert()メソッドを使用し、最初のパラメーターを0に設定することです。これは、データを読み取るときに、データが毎回前面から挿入されることを意味します。 、pop()メソッドを使用して、キューの最後の要素をポップします。
[ root@kube list]# cat demo15.py
# coding:utf-8
# 空のリストをキューとして定義する
queue =[]
# リストに要素を挿入します
queue.insert(0,"one")
queue.insert(0,"two")
queue.insert(0,"three")print(queue)print('最初の要素を取る:',queue.pop()) #pop()デフォルトでは、キューの最後の桁を取得します
print('2番目の要素を取る:',queue.pop())print('3番目の要素を取る:',queue.pop())[root@kube list]# py demo15.py
[' three','two','one']
最初の要素を取る: one
2番目の要素を取る: two
3番目の要素を取る: three
[ root@kube list]#
Python実装スタック
リストを使用してスタック関数をシミュレートする方法は、append()メソッドを使用してデータを格納し、pop()メソッドを使用してデータを読み取ることです。 append()メソッドがデータをリストに保存するとき、毎回データを最後に追加します。これは、前のプログラムのinsert()メソッドとは正反対です。
[ root@kube list]# cat demo16.py
# coding:utf-8
# リストをスタックとして定義する
stack =[]
stack.append('one')
stack.append('two')
stack.append('three')print(stack)print('最初の要素を取る:',stack.pop())print('2番目の要素を取る:',stack.pop())print('3番目の要素を取る:',stack.pop())[root@kube list]# py demo16.py
[' one','two','three']
最初の要素を取る: three
2番目の要素を取る: two
3番目の要素を取る: one
[ root@kube list]#
コレクションモジュールは、スタックとキューを実装します
queueAndStack =deque()
queueAndStack.append(1)
queueAndStack.append(2)
queueAndStack.append("hello")print(list(queueAndStack))
# キュー機能を実現し、キューから要素を取得します。ファーストインファーストアウトの原則に従って、ここでは1printを出力する必要があります。(queueAndStack.popleft())
# スタック機能を実現するには、スタックから要素を取得します。ラストインファーストアウトの原則に従って、helloをここに出力する必要があります。
print(queueAndStack.pop())
# リストをもう一度印刷する
print(list(queueAndStack))
上記は、pythonリスト(LIST)の詳細を深く理解しています。Python(list)の詳細については、ZaLou.Cnの他の関連記事に注意してください。
Recommended Posts