目次
1.1. キーと値のマッピング データ構造 key-value
1.2. 順序付けされていない項目コレクション、直接インデックスなし
1.1.set はキーのみを含む辞書として理解でき、その中のすべての要素は一意であり、本質的に重複排除されています。
1.3. 変更可能なデータ型ですが、コレクション内の要素は不変のデータ型である必要があります
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. リストを定義する場合は角括弧 [] を使用し、タプルを定義する場合は丸括弧 () を使用します。
辞書とコレクションの違い
ディクショナリは、キーと値の順序付けされていないコレクションです。
セットは、キーと値のペアを持たない、順序付けされていない一意の要素のセットです。