Python コンテナのタイプ -- リスト、タプル、辞書、セット

目次

1. リストリスト

1. リストの定義

2.機能のリスト

2.1.list は項目の順序付けられたコレクションです

2.2.list は変数データ型です

2.3.list は任意のデータ型を保存できます

3.リストの追加、削除、変更、チェック

3.1.リストへの新規追加

3.2. リスト操作

3.3.リストの削除

3.4.リストの変更

4. 統計

5.リストのコピー

6.リストの反転 -- 逆方向

7. リストのソート --sort

8.リスト走査

2.タプルタプル

1.タプルの定義

2.タプルの特徴

2.1.オーダードプロジェクトコレクション

2.2. あらゆる種類のデータを保存可能

2.3. 不変のデータ型

3.辞書辞書

1.dictの特徴

1.1. キーと値のマッピング データ構造 key-value

1.2. 順序付けされていない項目コレクション、直接インデックスなし

1.3. 変数のデータ型

2.dict値

2.1. キーを使用して値を直接取得する

2.2. get を使用して値を取得する

3. 辞書の横断

4.辞書の審査員メンバー

5.辞書の削除

6.辞書のマージ

7. dict 形式と str 形式の間の変換

4. セットコレクション

1.セットの特徴

1.1.set はキーのみを含む辞書として理解でき、その中のすべての要素は一意であり、本質的に重複排除されています。

1.2.未注文アイテムの収集

1.3. 変更可能なデータ型ですが、コレクション内の要素は不変のデータ型である必要があります

2.セットに新規追加

3.セットの削除

4. セット操作

5. 面接関連の質問

リストとタプルの違い

辞書とコレクションの違い


1. リストリスト

1. リストの定義

#方式一
lst1 = []
print("method1:", type(lst1))
#方式二
lst2 = list()
print("method2:", type(lst2))

#list()为工厂函数,可以把其他数据类型转换为list
#若在list()中传递的是可迭代对象时,可挨个存入列表
lst3 = list("123abc")
print("lst3 is", lst3)

2.機能のリスト

2.1.list は項目の順序付けられたコレクションです

lst = ["a", "b", "c", "d", "e"]
#输出列表第2个元素
print(lst[1])
#lst[-1:2:-2] 其中-1为起始位置,2为结束位置(不包括),-2位步长
#正数表示从前往后 负数表示从后往前
print(lst[-1:2:-2])

2.2.list は変数データ型です

変数データ型は元のメモリ アドレス空間内にあり、変更できます。

lst = ["abc", "123"]
#id()内置函数返回对象的内存地址
print("the id before modifing is", id(lst))
#尝试直接修改原list,查看内存地址是否改变
lst[1] = "xxyy"
print("the id after modifing is", id(lst))

#如果直接修改不可变数据类型,会报错
#string为不可变数据类型
str1 = "abc"
try:
    #尝试修改str1的第1个元素
    str1[0] = "x"
    print("modify successful!")
except TypeError as err:
    print(err)

2.3.list は任意のデータ型を保存できます

#print表示存放内置函数
lst = ["a", 3.4, 4, [1], print]

3.リストの追加、削除、変更、チェック

3.1.リストへの新規追加

関数 具体作用
アプリ() 要素をリストの最後に追加します
入れる() 指定した位置に要素を挿入
伸ばす() 渡される要素は反復可能なオブジェクトであり、各要素は順番に最後に挿入されます。
lst = ["aa", "12", "bb"]

lst.append("xxx")
print("after append:", lst)

lst.insert(2, "***")
print("after insert:", lst)

lst.extend("123")
print("after extend:", lst)

3.2. リスト操作

lst1 = [1, 2]
lst2 = [3, 4]
print("lst1 + lst2 =", lst1 + lst2)
print("lst1 * 3 =", lst1 * 3)

3.3.リストの削除

関数 具体作用
ポップ()

最後の要素はデフォルトで削除されますが、添え字を指定して削除することもできます。

削除された値を返すことができます

取り除く() 指定された要素を削除します。要素が存在しない場合は、エラーが報告されます。
del ステートメント スライスの削除
クリア() すべての要素を削除する
lst = ["a", "b", 1, 2, "c", "d"]

value = lst.pop()
print("delete the end of list:", lst)
print("the value of deleting:", value)
lst.pop(0)
print("delete the first of list:", lst)

try:
    lst.remove("d")
    print("delete success!")
except:
    print("delete fail!")

del lst[2:]
print("delect the a slice of list:", lst)

lst.clear()
print("delete all elements:", lst)

3.4.リストの変更

lst = ["a", "b", "c", "e", "f"]
#通过下标修改
lst[2] = "***"
print("after modifying by index:", lst)
#通过切片修改,赋值对象是一个可迭代对象
lst[3:] = "123"
print("after modifying by slice:", lst)

4. 統計

関数 具体作用
レン() 統計リストの長さ
カウント()

指定された要素がリスト内に出現する回数をカウントします。

索引() リスト内の指定された要素の添え字の位置を返します。指定された要素が複数ある場合は、最初の要素の添え字を返します。
lst = ["a", "a", "d", "d", "e"]
print("the length of list:", len(lst))
print("the count of a:", lst.count("a"))
try:
    print("the index of d:", lst.index("d"))
except ValueError as err:
    print(err)

5.リストのコピー

"lst2 = lst1" を直接使用してコピーすると、lst1 と lst2 は同じオブジェクトを指します。lst2 の値を変更すると、lst1 の値にも影響します。copy() を使用して浅いコピーを実行できます。コピータイプの値のみ

lst1 = ["a", "b", "c", "d", "e", "f"]
lst2 = lst1.copy()

#修改lst2的值 不会对lst1产生影响
lst2[2] = "***"
print("lst1 is", lst1)
print("lst2 is", lst2)

#以切片的方式也可以实现浅拷贝
lst3 = lst1[:]
lst3[3] = "***"
print("lst1 is", lst1)
print("lst3 is", lst3)

6.リストの反転 -- 逆方向

lst = ['a', 'b', 'c', 'd', 'e', 'f']
lst.reverse()
print("reverse list:", lst)

7. リストのソート --sort

sort メソッドは、デフォルトでリストを昇順に並べ替えます。リスト内の要素が数値の場合、小さい数値から大きい数値の順に並べ替えられます。リスト内の要素が文字列の場合、Unicode コードの合計に従って並べ替えられます。文字列内のすべての文字の。

lst = ['f', 'e', 'd', 'c', 'b', 'a']
lst.sort()
print("asc:", lst)
#降序排序
lst.sort(reverse=True)
print("desc:", lst)

8.リスト走査

lst = ["abc", "aa", "xx", "xyz"]

# 依次取列表中的元素
for i in lst:
    print(i)

# enumerate返回下标和值
print("key  -->     value")
for k, v in enumerate(lst):
    print(f"{k}    -->     {v}")

2.タプルタプル

1.タプルの定義

t1 = ()
print(type(t1))

t2 = (1, )     #初始元组只有一个元素时,后面要打逗号,没有逗号为int类型
t3 = (1)
print(f"type of t2 is {type(t2)}, type of t3 is {type(t3)}")

2.タプルの特徴

2.1.オーダードプロジェクトコレクション

2.2. あらゆる種類のデータを保存可能

2.3. 不変のデータ型

タプル内のデータは変更できませんが、変更するデータが変数タイプの場合は、リストなどのこの要素を変更できます。

t1 = ("abc", 3, 4.5, [1, 2])
try:
    t1[0] = "a"
    print("modify success!", t1)
except TypeError as err:
    print(err)
# 修改tuple中存放的list类型的数据(可变数据类型)
try:
    t1[3][0] = 2
    print("modify success!", t1)
except TypeError as err:
    print(err)

3.辞書辞書

1.dictの特徴

1.1. キーと値のマッピング データ構造 key-value

ディクショナリのキーは本質的に重複排除されており、キーはハッシュ可能なオブジェクト (不変のデータ型) である必要があります。

辞書の値は任意の値にすることができます

1.2. 順序付けされていない項目コレクション、直接インデックスなし

1.3. 変数のデータ型

2.dict値

2.1. キーを使用して値を直接取得する

d1 = {"name": "sumeng", "age": 18}
print(d1["name"])
# 没有想要获取的key值时会报错
try:
    print(d1["xxx"])
except:
    print("get error")

2.2. get を使用して値を取得する

get 属性の値を取得するときに指定されたキーが見つからない場合は、エラーを報告せずに直接 None を返します。Get はデフォルト値を設定することもできます。

d1 = {"a": 1, "b": 2}
print("the value of a is", d1.get("a"))
# 若字典key没有c,则返回0
print("the value of c is", d1.get("c", 0))

3. 辞書の横断

d1 = {"a": 1, "b": 3}
# 直接进行循环遍历取值,取到的为key值
for i in d1:
    print(f"key is {i}")
# 使用items方法返回key和value
for i in d1.items():
    print(f"(key, value) is {i}")
for k, v in d1.items():
    print(f"{k} --> {v}")

4.辞書の審査員メンバー

d1 = {"a": 1, "b": 3, "c": 5}

# 使用in关键字判断指定值是否在字典中--默认情况下判断的是key值
print("if a in d1:", "a" in d1)

# 使用values返回字典的所有value值
print(f"the values of dict is", d1.values())

# 使用keys返回字典中所有的key值
print(f"the keys of dict is", d1.keys())

5.辞書の削除

d1 = {"a": 1, "b": 2, "c": 3}

# pop删除指定元素,返回指定删除key的values值
value1 = d1.pop("a")
print("deleted value is", value1)

# popitem删除存储的最后一个,返回被删除的(key, vlaue)元组
value2 = d1.popitem()
print("deleted (key, value) is", value2)

6.辞書のマージ

d1 = {"a": 1, "b": 2}
d2 = {"c": 3, "d": 4}

# 直接改变的d1的内容,将d2合并到d1中去
d1.update(d2)
print(f"method1: {d1}")

# 合并生成新字典
d3 = dict(d1, **d2)
print(f"method2: {d3}")

7. dict 形式と str 形式の間の変換

JSONライブラリの利用

import json
d1 = {"zhangsan": {"age": 18, "hobby": "basketball"},
      "lisi": {"age": 18, "hobby": "music"}}

# dict --> str
d1_str = json.dumps(d1)
print(f"the type of d1_str is {type(d1_str)}")

# str --> dict
d2 = json.loads(d1_str)
print(f"the type of d2 is {type(d2)}")

4. セットコレクション

1.セットの特徴

1.1.set はキーのみを含む辞書として理解でき、その中のすべての要素は一意であり、本質的に重複排除されています。

この機能は、重複排除を実現するための型変換に使用できます。

1.2.未注文アイテムの収集

1.3. 変更可能なデータ型ですが、コレクション内の要素は不変のデータ型である必要があります

2.セットに新規追加

s1 = {1, 2, 3}

# 新增1个元素
s1.add(4)
print(f"after add:", s1)

# 一次性新增多个元素update--传递可迭代对象
s1.update("abc")
print(f"after update:", s1)

3.セットの削除

s1 = {1, 2, 3, 4, 'a', 'c', 'b'}

# 使用remove删除元素,若要删除的元素set中没有会报错
s1.remove(4)
print("after remove:", s1)

# 使用discard删除元素,要删除的元素不在set中也不会报错
s1.discard("x")
print("after discard:", s1)

4. セット操作

s1 = {1, 2, 3, 4}
s2 = {2, 4, 5, 6}

# 交集
print("s1 & s2 =", s1 & s2)
# 并集
print("s1 | s2 =", s1 | s2)
# 差集
print("s1 - s2 =", s1 - s2)
print("s2 - s1 =", s2 - s1)
# 对称差集--在s1、s2中,但不同时在两个里面
print("s1 ^ s2 =", s1 ^ s2)

5. 面接関連の質問

リストとタプルの違い

1. リストは可変データ型であり、追加、削除、および変更操作をサポートしますが、タプルは不変データ型であるため、追加、削除、変更はできず、全体として置き換えることのみが可能です。

2. リストは可変データ型であるため、辞書のキー値として使用できませんが、タプルはキー値として使用できます。

3. 格納する場合、空のリストは空のタプルよりも 16 バイト多く占有されます。

4. リストを定義する場合は角括弧 [] を使用し、タプルを定義する場合は丸括弧 () を使用します。

辞書とコレクションの違い

ディクショナリは、キーと値の順序付けされていないコレクションです。

セットは、キーと値のペアを持たない、順序付けされていない一意の要素のセットです。

おすすめ

転載: blog.csdn.net/m0_69298614/article/details/132320020