ホームページ  >  記事  >  バックエンド開発  >  Python のリストとタプルの詳細な例

Python のリストとタプルの詳細な例

WBOY
WBOYオリジナル
2016-06-16 08:46:211154ブラウズ

この章ではデータ構造の概念を紹介します。データ構造は、何らかの方法でまとめられたデータ要素のコレクションです。 Python では、最も基本的なデータ構造はシーケンスです。シーケンス内の各要素にはシーケンス番号が割り当てられます。シーケンス番号は要素の位置であり、インデックスとも呼ばれます。注: 最初のインデックスは 0 です。
1. シーケンスの概要
Python には、リスト、タプル、文字列、Unicode 文字列、バッファ オブジェクト、xrange オブジェクトの 6 つの組み込みシーケンスがあります。
ここではリストとタプルに焦点を当てます。リストとタプルの主な違いは、リストは変更できるが、タプルは変更できないことです。一般に、リストはほとんどすべての状況でタプルを置き換えることができます。
シーケンスは、一連の値を操作する必要がある場合に非常に便利です:

コードをコピーします コードは次のとおりです:

Edward = ["Gumby",42]

同時に、シーケンスには他のシーケンスを含めることができます。例:
コードをコピー コードは次のとおりです:

Edward = ["Gumby",42]
John = [" Smith",50]
database = [Edward,John]

2. 共通のシーケンス操作
すべてのシーケンス タイプは、インデックス付け、シャーディングなどの特定の特徴的な操作を実行できます。 、加算、乗算、および要素がシーケンスのメンバー (メンバーシップ) であるかどうかを確認します。さらに、Python には、シーケンスの長さを計算し、最大要素と最小要素を見つけるための組み込み関数もあります。
2.1 インデックス
シーケンス内のすべての要素には、0 から始まり増加する番号が付けられます。これらの要素には、番号によって個別にアクセスできます:
コードをコピーします コードは次のとおりです:

>>> ;greeting = "hello "
>>>greeting[0]
'H'

負のインデックスを使用すると、Python は右からカウントし始めます。は、最後の要素から、そして最後の要素の位置番号は -1 です!
コードをコピー コードは次のとおりです:

>greeting[-1]
' g'

2.2 シャーディング
シャーディングは、コロンで区切られた 2 つのインデックスによって実装される、特定の範囲内の要素にアクセスできます。スライスはシーケンスの一部を抽出する場合に便利です。最初のインデックスは抽出された部分の最初の要素番号であり、最後のインデックスはスライス後の残りの部分の最初の要素番号です。
コードをコピー コードは次のとおりです:

>number = [1,2,3, 4,5 ,6,7,8,9,10]
>>> 数値[3:6]
[4,5,6]
>>>> 0:1 ]
[1]

2.2.1 エレガントなショートカット
は最後の 3 つの要素にアクセスする必要があります。これは次のように明示的に行うことができます:
コードをコピーします コードは次のとおりです:

>number[7:10]
[8,9,10] ]

ここでインデックス 10 が指す 11 番目の要素は存在しませんが、最後の要素の後にあります。
リストの最後から数え始める必要がある場合、つまり、シャード部分にシーケンスの最後の要素が含まれている場合は、最後のインデックスを空白のままにしておきます:
コードをコピー コードは次のとおりです:

>number[-3:]
[8,9,10]

このメソッドはシーケンスの先頭の要素、またはシーケンス全体を表示します:
コードをコピー コードは次のとおりです。 :

>>> 数値[:3]
[1,2,3]
>数値[:]
[1, 2,3,4,5,6,7,8,9,10]

2.2.2 より大きなステップ サイズ
シャーディングの場合、シャーディングの開始と終了を指定する必要があります別のパラメータであるステップ サイズは、通常、暗黙的に設定されます。デフォルトのステップ サイズは 1 です。ステップ サイズを 1 より大きい数値に明示的に設定すると、一部の要素がスキップされます。
コードをコピーします コードは次のとおりです:

>number[0:10:2]
[ 1,3,5,7,9]
>>>number[3:6:3]
[4]

ステップ サイズは変更できません0 ですが、負の数も可能です。つまり、要素は右から左に抽出されます:
コードをコピー コードは次のとおりです:

> 数値 [10:0:-2]
[10,8,6,4,2]
> 数値[0:10: -2]
[]

上記の 2 番目の式は間違っています。ステップ サイズとして負の数値を使用する場合、開始点は終了点より大きくなければなりません。
2.3 シーケンスの追加
シーケンスの接続操作はプラス記号を使用して実行できます:
コードをコピー コードは次のとおりです:

>>> [1,2,3] + [4,5,6]
[1,2,3,4,5,6]
>> >' こんにちは、' + 'world'
'hello, world'
>>>[1,2,3] + 'hello'
TypeError: リストのみ連結できます (' ではありません)文字列') をリストに追加

上記の 3 番目の例に示すように、リストと文字列は両方ともシーケンスですが、接続できるのは同じタイプの 2 つのシーケンスのみです。
コードをコピー コードは次のとおりです。

2.4 乗算
シーケンスに数値 x を乗算すると、新しいシーケンス、新しいシーケンスでは、元のシーケンスが x 回繰り返されます:
[code]
>>> 'python' *5
'pythonpythonpythonpythonpython'
>>> ; [ 42] * 5
[42,42,42,42,42]

なし、空のリストと初期化
空のリストは 2 つの角括弧 ([ ]) ですが、10 個の要素を占めるが有用なコンテンツを含まないリストを作成したい場合は、null 値を表す値が必要です。
となります。 コードをコピー コードは次のとおりです:

> シーケンス = [なし] * 10
>

シーケンス [なし,なし,なし,なし,なし,なし,なし,なし,なし,なし]


2.5 メンバーシップ
値がシーケンス内にあるかどうかを確認するには、次を使用できます。 in 演算子。特定の条件が true であるかどうかを確認し、対応する値 (True または False) を返します。 コードをコピー
コードは次のとおりです:


>>> p = 'write'
>>> p
True
>>> ユーザー =["a"," b", "c"]
>>> raw_input('Enter:') in user
Enter:aTrue

2.6 の長さ、最大および最小値 コードをコピー
コードは次のとおりです:


>>>数値 = [10,20,30] ]
>>> len(数字)
>>> 最大(数字) (1,99)
>>> min(1,99)

上記の最後の 2 つの例では、max 関数と min 関数のパラメーターはシーケンスではありません。ただし、複数の数値をパラメータとして直接使用できます。
3. リスト: Python の "coolie"
3.1 リスト関数
文字列はリストのように変更できないため、文字列に基づいてリストを作成すると便利な場合があります。 ps: list 関数は、文字列だけでなく、あらゆる種類のリストに対して機能します。
コードをコピーします コードは次のとおりです:

>>> list('hello')
['h ','e','l','l','o']

ヒント: 次の式を使用して、文字のリストを文字列に変換できます:
コードをコピー コードは次のとおりです:

> strs = ' '.jion(list)>> ;> strs
"h e l l o"

3.2 基本的なリスト操作
メソッドは、特定のオブジェクトに密接に関連する関数です。または文字列または他のタイプのオブジェクト。リストには、その内容を検査または変更するためのいくつかの方法が用意されています。
3.2.1 append
append メソッドは、リストの最後に新しいオブジェクトを追加するために使用されます:

コードをコピー コードは次のとおりです。
>>> lst = [1,2,3]
>>> lst.append(4)
>>> lst
[1, 2,3,4]

注: append メソッドは、変更された新しいリストを単に返すのではなく、元のリストを直接変更します。

3.2.2 count
count メソッドは、リスト内に要素が出現する回数をカウントします。

コードをコピー コードは次のとおりです:
> x =[[1,2],1,1,[1,2,[1,2]]]
>> ;> x.count(1)


3.2.3 extendextend メソッドは、リストの最後に別のシーケンスから複数の値を一度に追加できます。
注: extend メソッドと接続操作 (+) の主な違いは、extend メソッドは拡張シーケンスを変更するのに対し、接続操作は新しいリストを返すことです。

3.2.4 Index
index メソッドは、リストから最初に一致する値のインデックス位置を見つけるために使用されます:


コードをコピーコードは次のとおりです:>>> knights = ['we','are','the','knights']
>> ;> knights.index('the')
2
>>> knights.index("hi")
ValueError:list.index(x):x がリストにありません


一致するものが見つからない場合、例外がスローされます。
3.2.5 insert
insert メソッドは、オブジェクトをリストに挿入するために使用されます:


コードをコピー コードは次のとおりです。 :

>>> 数値 = [1,2,3,6]
>>> 数値 = insert(3,5)
>>>
[1,2,3,5,6]
>>> 数値[3:3] = [4]
>>> 数値
[1,2] ,3,4,5,6]

上記の最後の例では、挿入はスライスの割り当てによって実装されていますが、可読性は挿入ほど良くありません。

3.2.6 Pop
pop メソッドは、リストから要素を削除し、要素の値を戻します。これは、リストを変更し、要素の値を返すことができる唯一のリスト メソッドです。 🎜>
コードをコピーします コードは次のとおりです:
> x = [1,2,3]
> ;>> x.pop()
3
>>> リスト内の値の最初の一致を削除するために使用されます:


コードをコピー

コードは次のとおりです:
>> x = ['to','be','to']> >> x.remove('to')>>> 'be','to']>>> という値が最初に出現することがわかります。削除され、リストにない値は削除されません。
3.2.8 reverse
reverse メソッドはリスト内の要素を逆順に保存します。



コードをコピー

コードは次のとおりです。 :

> x = [1,2,3]
>>x.reverse()
>>
,2 ,1]
3.2.9 sortsort メソッドは、リストを元の位置でソートするために使用されます。これは、単純にソートされたリストのコピーを返すのではなく、元のリストを変更することを意味します。 元の値を変更せずに並べ替えを行いたい場合は、最初に値を割り当ててから並べ替える必要があります:


コードをコピー

コードは次のとおりです:

> x = [4,2,7,1]
>>
> y = x[:]
> ;>> y.sort ()
>>> 🎜>注: 上記の例では、シャーディングは y=x[:] を使用する非常に効率的な方法です。リスト全体。単純に x を y に代入する (y=x) という方法はありません。そうすると、x と y が同じリストを指すことになるからです。 ソートされたリストのコピーを取得する別の方法は、sorted 関数を使用することです:
コードをコピーします

コードは次のとおりです:


>>> x = [4,5,3,7,2]
>>> y = ソート(x)
>>> ,3,7,2]
>>> y[2,3,4,5,7]


3.2.10 高度な並べ替え
If If要素を特定の方法で並べ替えたい場合は、compare(x,y) の形式で比較関数をカスタマイズできます。組み込みの cmp 関数は、比較関数のデフォルトの実装を提供します: コードをコピーします
コードは次のとおりです:


>>> cmp(1,2)
>>> cmp(2,1)
>>> >>>> ; 数字 = [5,3,9,7]
>>> 数字.sort(cmp)
>>> 数字 ,7,9]


sort メソッドには、key と reverse という 2 つの追加のオプション パラメータがあります。これらを使用するには、名前で指定します。
コードをコピー コードは次のとおりです。


>>> x = ['a','abc; ',' ab']
>>> x.sort(key=len)
>>> = [2,4,1,5]>>> y.sort(reverse)
>>> y
[5,4,2 ,1]


4. タプル: Immutable Sequence
タプルを作成するための構文は単純です。いくつかの値をカンマで区切ると、タプル グループが自動的に作成されます。
コードをコピー コードは次のとおりです:

>>>1,2,3
( 1,2 ,3)
>>>(1,2,3)
(1,2,3)
>>>()
()
> >>42,
(42,)

上記の最後の例のように、値を含むタプルを実装する場合は、価値。
4.1 タプル関数
タプルはシーケンスをパラメータとして受け取り、それをタプルに変換します。パラメータがタプルの場合、パラメータは変更されずに返されます:
Copyコード コードは次のとおりです:

>>> tuple([1,2,3])
(1,2,3)
>>> タプル('abc')
('a','b','c')
>>> タプル((1,2,3)) 🎜>( 1,2,3)


4.2 基本的なタプル操作
タプルの作成とタプル要素へのアクセスを除けば、実際には複雑な操作はありません。
コードのコピー コードは次のとおりです:

>>>x = 1,2,3
>>>x[1]
2
>>>

4.3 では、どのような重要性があるのでしょうか? タプルは置き換えられません:
(1) タプルはマップのキーとして使用できますが、リストは使用できません。
(2) タプルは多くの組み込み関数やメソッドの戻り値として存在します。


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