Python入門-基本データ構造
5765 ワード
Pythonの中のデータ構造は、基本的に以下のいくつか、リスト、集合、メタグループがあり、異なるデータ構造に対してもちろん異なる表現形式、操作方法があります.まず、各種データ構造の表現方式を見てみましょう.
リスト#リスト#
リストの特徴は、構造が可変であるだけでなく、タイプの異なるオブジェクトを入れることができる可変の集合であることです.
同じセットに様々なタイプのデータを入れることができ、タイプ検出はありません.だから私たちは使用するときにコードの作成にも注意しなければなりません.
リストの通常の操作には取得要素があります単純に要素にアクセスするだけであれば、スライスまたは下付きnum[0...n]を使用できますが、リストには
要素の追加
コレクションを追加
要素を指定した場所に挿入
要素削除リストの値xの最初の要素を削除します.このような要素がない場合は、エラーが返されます.
他にもいくつかの関数があります
文字列もリストなので、文字列の操作に適しています.基本的にはリストに適しています.例えば、次の使い方です.
リストの操作も文字列と同じように簡単になりましたが、コードを規範化して、コードの読み取りを利用したほうがいいです.
メタグループ
メタグループ(tuple)も非常に一般的なデータ構造であり、リストとは異なり、メタグループの最大の特性は可変ではない.1つのタプルは、次のようなカンマで区切られた数の値で構成されます.
メタグループを定義するときはカッコを付けなくてもいいですが、カッコを付けるとコードの読み取りに適しています.一般化されたテーブルと同様に、メタグループをネストできます.
可変メタグループは可変であり、このような可変は要素の参照に現れます.例えば、
メタグループは不変であるが,メタグループ内のlistリストは可変であり,listを操作してもエラーは報告されないことがわかる.これは、リストを変更したにもかかわらず、メタグループ内のリストオブジェクトが指すメモリアドレスが変わらないためです.空のメタグループを構築したい場合、または要素が1つしかないメタグループを構築したい場合
pythonの文法は非常に神秘的で、他のプログラミング言語とは異なり、線形シーケンスの要素を直接取り出すことができます.
しゅうごう
もう1つの比較的一般的なデータ構造はセット(set)であり、javaと同様に、セットは無秩序で重複しない要素のセットであり、基本機能は関係テストと重量除去(サブセット、交差、並列セットなどを含むかどうか)を含む.通常、カッコまたはset()関数を使用してセットを作成し、set()を使用して空のセットを作成する
集合導出構文があります.
辞書
辞書はjavaのmapに相当し、辞書はkeyをインデックスとし、キーワードkeyは任意の可変タイプであってもよく、比較すると同じインデックスを求めることができず、通常は文字列や数値を用いる.タプルに文字列や数字だけが含まれている場合は、タプルもキーワードとして使用できますが、タプルにリストのような可変オブジェクトが含まれている場合は、キーワードとして使用できません.
ディクショナリは、
1つの辞書に対して
ディクショナリ導出式を使用してディクショナリを作成することもできます.
#
[1,2,3,4,5,6]
#
(1,2,3,4,5,6)
#
{1,2,3,4,5,6}
#
{'name': 'tom', 'age': 11}
リスト#リスト#
リストの特徴は、構造が可変であるだけでなく、タイプの異なるオブジェクトを入れることができる可変の集合であることです.
num = [1,2,3,4,"23",True]
for x in num:
print(type(x))
#
同じセットに様々なタイプのデータを入れることができ、タイプ検出はありません.だから私たちは使用するときにコードの作成にも注意しなければなりません.
リストの通常の操作には取得要素があります単純に要素にアクセスするだけであれば、スライスまたは下付きnum[0...n]を使用できますが、リストには
num = [1,2,3,4,"23",True]
print(num[3])
# 3
print(num[3:5])
# [4, '23']
要素の追加
num = [1,2,3,4,"23",True]
# 1,append , ,
num.append(3)
# 2, , num[6:6]
num[len(num):] = [3]
print(num)
# [1, 2, 3, 4, '23', True, 3]
コレクションを追加
# ,extend
num = [1,2,3,4,"23",True]
1、 1,extend ,
num.extend([8,5])
2、 2, ,
num[len(num):] = [8,5]
print(num)
# [1, 2, 3, 4, '23', True, 3,8,5]
要素を指定した場所に挿入
num = [1,2,3,4,"23",True]
# 1,insert 3 1 ,
num.insert(1,3)
# 2,
num[1:1] = [3]
print(num)
# [1, 3, 2, 3, 4, '23', True]
要素削除リストの値xの最初の要素を削除します.このような要素がない場合は、エラーが返されます.
num = [1,2,3,3,4,"23",True]
num.remove(3)
print(num)
# [1, 3, 2, 3, 4, '23', True],
# , ValueError: list.remove(x): x not in list
他にもいくつかの関数があります
# ,pop remove ,pop(x) pop
pop()
pop(x)
#
sort()
#
reverse()
# , [:]
copy()
# x
count(x)
# x , ValueError: x is not in list
index(x)
# , del num[:]
clear()
文字列もリストなので、文字列の操作に適しています.基本的にはリストに適しています.例えば、次の使い方です.
num = [1,2,3]
print(num * 3)
# [1, 2, 3, 1, 2, 3, 1, 2, 3]
リストの操作も文字列と同じように簡単になりましたが、コードを規範化して、コードの読み取りを利用したほうがいいです.
メタグループ
メタグループ(tuple)も非常に一般的なデータ構造であり、リストとは異なり、メタグループの最大の特性は可変ではない.1つのタプルは、次のようなカンマで区切られた数の値で構成されます.
t = 1,2,3,4,5,'sad',True
print(t)
# (1, 2, 3, 4, 5, 'sad', True)
メタグループを定義するときはカッコを付けなくてもいいですが、カッコを付けるとコードの読み取りに適しています.一般化されたテーブルと同様に、メタグループをネストできます.
a = (1,2,3)
b = (4,5,6)
print((a,b))# , ,print `,`
可変メタグループは可変であり、このような可変は要素の参照に現れます.例えば、
num = [1,2,3]
a = (1,2,3,num)
# TypeError: 'tuple' object does not support item assignment
a[0] = 3
print(a)
num = [1,2,3]
a = (1,2,3,num)
print(a)
# (1, 2, 3, [1, 2, 3])
num[0] = 3
print(a)
# (1, 2, 3, [3, 2, 3])
メタグループは不変であるが,メタグループ内のlistリストは可変であり,listを操作してもエラーは報告されないことがわかる.これは、リストを変更したにもかかわらず、メタグループ内のリストオブジェクトが指すメモリアドレスが変わらないためです.空のメタグループを構築したい場合、または要素が1つしかないメタグループを構築したい場合
#
a= ()
# , , ,
b = (1,)
print(a)
print(b)
#
()
(1,)
pythonの文法は非常に神秘的で、他のプログラミング言語とは異なり、線形シーケンスの要素を直接取り出すことができます.
a= (1,2,3)
t1,t2,t3 = a
print(a)
print(t1,t2,t3)
#
(1, 2, 3)
1 2 3
しゅうごう
もう1つの比較的一般的なデータ構造はセット(set)であり、javaと同様に、セットは無秩序で重複しない要素のセットであり、基本機能は関係テストと重量除去(サブセット、交差、並列セットなどを含むかどうか)を含む.通常、カッコまたはset()関数を使用してセットを作成し、set()を使用して空のセットを作成する
num = {1,2,3,4,5,6,6}
print(num)
# {1, 2, 3, 4, 5, 6}
#
print(1 in num)
# True
num = {1,2,3,4,5,6,6}
num2 = {0,1,2,3,7,8,9}
# , A , B
num3 = num - num2
print(num3)
# {4, 5, 6}
# ,
num3 = num & num2
print(num3)
# {1, 2, 3}
# , ,
num3 = num | num2
print(num3)
# {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
# , A B,
num3 = num - num2
print(num3)
# {0, 4, 5, 6, 7, 8, 9}
集合導出構文があります.
num= [x for x in list(range(20)) if x % 2 != 0]
print(num)
# {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}
num= {x for x in "ababababababbae" if x not in "abc"}
print(num)
# {'e'}
辞書
辞書はjavaのmapに相当し、辞書はkeyをインデックスとし、キーワードkeyは任意の可変タイプであってもよく、比較すると同じインデックスを求めることができず、通常は文字列や数値を用いる.タプルに文字列や数字だけが含まれている場合は、タプルもキーワードとして使用できますが、タプルにリストのような可変オブジェクトが含まれている場合は、キーワードとして使用できません.
ディクショナリは、
{}
を使用して空のディクショナリを作成する無秩序なキー値ペアの組合せです.基本的にjavaでmapの操作はpythonの辞書に適用されます.例えばkeyと同じキー値ペアを書き込むと元のvalueが上書きされますが、存在しないkeyにアクセスするとjavaでnullが返され、pythonではNoneが返されますが、pythonではデフォルトの値を設定することもできますperson= {'name': 'tom', 'age': 11}
grade = person.get('grade')
print(grade)
# None
person= {'name': 'tom', 'age': 11}
grade = person.get('grade','grade first')
print(grade)
# grade first
1つの辞書に対して
list(d.keys())
を実行すると、1つの辞書のすべてのキーワードからなる無秩序なリストが返されます(ソートする場合は、sorted(d.keys())
を使用してin
キーワードを使用するだけで、辞書にキーワード(辞書を指す)があるかどうかを確認できます.delを使用してkeyキーワードを削除したり、辞書全体を削除したりして、削除してから辞書にアクセスすると、NameError: name 'person' is not defined
オブジェクトが定義されていない異常構造辞書は{}を使用してもよいしdict()構造関数を使用してもよいperson = dict([('name','tom'), ('age',11)])
print(person)
# {'name': 'tom', 'age': 11}
person = dict(name='tom',age=11)
print(person)
# {'name': 'tom', 'age': 11}
ディクショナリ導出式を使用してディクショナリを作成することもできます.
num = {x:x**2 for x in range(5)}
print(num)
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}