ホームページ  >  記事  >  バックエンド開発  >  Python の組み込みデータ構造の詳細な説明

Python の組み込みデータ構造の詳細な説明

高洛峰
高洛峰オリジナル
2017-03-13 18:08:401457ブラウズ

この記事では、Pythonの5つの組み込みデータ構造と操作例をまとめています。必要な方は参考にしてください。

1. リスト (List)

list は、一連の項目を格納できるデータ構造です。リストの項目はカンマで区切られ、これがリストであることを示すために一対の角括弧で囲む必要があります。次の例は、list の基本的な操作を示すために使用されます:


# 定义一个 list 对象 class_list:
class_list = ['Michael', 'Bob', 'Tracy']
# 获得一个 class_list 的长度
print 'class have', len(class_list), 'students'
# 访问class_list中的对象
print 'The 3rd student in class is', class_list[2]
# 往 class_list 中插入对象
class_list.append('Paul')
# 从 class_list 中删除一个项目
del class_list[0]
# 对 class_list 进行排序
class_list.sort()
# 遍历整个class_list中的项目
print 'These students are :',
for student in class_list:
  print student,

出力結果は次のとおりです:

クラスには 3 人の生徒がいます
クラスの 3 人目の生徒は Tracy です
これらの生徒は次のとおりです: Bob Paul Tracy

概要上記のコードには注意すべき点がいくつかあります:

どのタイプのオブジェクトも class_list に追加できます。つまり、リスト内の項目が同じタイプである必要はありません。 class_list にリストを挿入することもできます。
sort 関数 は、コピーを返すのではなく、それ自体で動作します。これは、文字列は変更できないため、string 型とは異なります。
print 関数の end キーワード パラメータは、入力完了後の出力を指定するために使用されます。上記のコードでは、改行文字をスペース文字で置き換えています。

2. タプル

タプルは、使用法と概念においてリストとあまり変わりません。リストの読み取り専用バージョンとみなすことができます。これは、タプルが定義されると変更できないことを意味します。オブジェクトを追加または削除したり、タプル内のオブジェクトを変更したりすることはできません。

タプル内の項目もカンマで区切る必要があり、項目がタプルであることを示すために括弧で囲む必要があります。この括弧はオプションです。つまり、タプルは次の 2 つの方法で定義できます:

t = 'Adam', 'Lisa', 'Bart'
t = ('Adam', 'Lisa', 'Bart ')
ただし、括弧を省略することが必ずしも良い習慣であるとは限りません。また、タプルの項目が 1 つだけの場合は、最初の項目の後にカンマが必要です。この場合、 t = ('Adam',) と定義します。これは奇妙な制約のように思えるかもしれませんが、カンマがないと、括弧なしで定義されたタプルは t = 'Adam' となり、明らかにあいまいです。

3. 辞書

辞書は、キーと値 (キー 値) のペアのセットとして見ることができます。キーは一意である必要があり、各キーは値に関連付けられます。キーは不変オブジェクト (タプル、数値型、文字列など) である必要があります。また、ディクショナリ内のキーと値のペアは順序付けされていないことにも注意してください。

辞書の定義は、d={key1 : value1, key2 : value2, key3 : value3} の形式である必要があります。キーと値はコロンで区切られ、キーと値のペアはカンマで区切られ、すべてのキーと値のペアは中かっこで囲まれます。いくつかの基本的な操作は次のとおりです:


# 字典的定义
d = {
  'Adam': 95,
  'Lisa': 85,
  'Bart': 59
}
# 通过键来获取值
print "Adam's score is", d['Adam']
# 删除一个键值对
del d['Bart']
# 遍历字典
for name, score in d.items():
  print '{0} is {1}'.format(name, score)
# 往字典中增加一个键值对
d['Paul'] = 72
# 判断字典中是否存在某键,也可以用 if ab.has_key('Lisa')
if 'Lisa' in d:
  print "Lisa's address is", d['Lisa']

出力結果は次のとおりです:


Adam's score is 95
Lisa is 85
Adam is 95
Lisa's address is 85

4. シーケンス

上記で紹介した 3 つの組み込みデータ構造はすべてシーケンスであり、インデックス操作は次のとおりです。シーケンス 基本的な操作です。シーケンス内のオブジェクトには、添え字操作を通じて直接アクセスできます。添字操作は上で説明しましたが、キューとタプルには数字の添字が付けられ、辞書にはキーワードの添字が付けられます。

シーケンスの添字は 0 から始まります。上記の例では、添字のみが正の数です。実際には、添字は -1、-2、-3... などの負の数にすることもできます。負の添字は反対方向の位置を表します。たとえば、class_list[-1] は class_list の最後の項目を返します。

このシーケンスは、負の添え字だけでなく、二重添え字もサポートしています。この二重添え字のペアは間隔を表します。たとえば、class_list[0:3] は、class_list の添字 1 から添字 3 までのサブシーケンスのコピーを返します。この間隔は、半閉間隔と半開間隔のペアであることに注意してください。この操作をスライス操作と呼びます。スライス操作の 2 番目のインデックスがシーケンスの範囲を超える場合、スライス操作はシーケンスの終わりで終了します。スライス操作の両方の添字にはデフォルト値があり、最初の添字のデフォルト値は 0 で、2 番目の添字のサイズはシーケンスの長さです。

スライス操作の 3 番目のパラメーターを指定することもできます。3 番目のパラメーターは、スライス操作のステップ サイズを表します。そのデフォルト値は 1 です。ステップ サイズは、name[0:10:3] などの項目間の距離を表します。返されるのは、name の下付き文字 0、3、6、および 9 で構成されるサブシーケンスです。

5. Set (Set)

コレクションは、単純なオブジェクトの順序付けされていないコレクションです。セットは、オブジェクトが存在する順序や出現回数に関係なく、オブジェクトがコレクション内に存在するかどうかだけを気にする場合に適しています。基本関数: セットのメンバーであるかどうか、セットが別のセットのサブセットであるかどうかを判断し、2 つのセットの共通部分を取得するなど。例:


s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
# 判断对象是否在集合中
if 'Bart' in s:
  print "Bart is in ?", 'Bart' in s
# 使用copy函数来拷贝一个set
sc = s.copy()
# 往集合中添加对象
sc.add('Bill')
# 从集合中删除对象
sc.remove('Adam')
# 求两个集合的交集,也可以使用 s.intersection(sc)
print s & sc

出力結果:


Bart is in ? True
set(['Lisa', 'Paul', 'Bart'])

以上がPython の組み込みデータ構造の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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