目次
データコンテナ:セット(コレクション)
リストは変更でき、繰り返し要素をサポートし、順序付けされます
。タプルと文字列は変更できず、繰り返し要素をサポートし、順序付けされます。
制限は、すべての要素が繰り返しの要素をサポートしていることです。
コレクションの主な特徴は、要素の重複をサポートしないこと(独自の重複排除機能がある)、およびそのコンテンツが順序付けされていないことです。
集合の定義
基本的な構文:
コレクション変数を定義します: 変数名 = {要素, 要素, ..., 要素}
空のコレクションを定義します: 変数名 = set()
基本的にはリスト、タプル、文字列などと同じ定義です。
リストの使用法: []
タプルの使用法: ()
文字列の使用法: ""
セットの使用法: {}
注: コレクションは自動的に重複排除され、順序付けされません。
例:
# 定义集合
my_set = {
"my", "you", "ergou", "二狗", "ergou"}
my_set_empty = set() # 定义空集合
print(f"my_set的内容是{
my_set},类型是:{
type(my_set)}")
print(f"my_set_empty的内容是{
my_set_empty},类型是:{
type(my_set_empty)}")
操作の結果:
my_set の内容は {'ergou', 'you', 'ergou', 'my'}、タイプは次のとおりです: <class 'set'> my_set_empty の内容は set()、タイプは次のとおりです:
<クラス「セット」>
コレクションに対する一般的な操作 - 変更
セットは順序付けされていないため、セットは添字インデックスへのアクセスはサポートされていませんただし
、セットはリストと同様に変更できるため、セットを変更する方法を見てみましょう。
新しい要素を追加する
構文: collection.add(要素)。指定された要素をコレクションに追加します。
結果: コレクション自体が変更され、新しい要素が追加されます。
要素の削除
構文: Collection.remove(element)、指定された要素をコレクションから削除します
結果: コレクション自体が変更され、要素が削除されます。
セットから要素をランダムに削除する
構文: Set.pop()、関数、セットから要素をランダムに削除
結果: 1 つの要素の結果が得られます。同時にコレクション自体が変更され、要素が削除されます
コレクションをクリアする
構文: collection.clear()、関数、コレクションをクリアします
結果: コレクション自体がクリアされます
2 セットの差を求めます
構文: set 1.difference (set 2)、関数: set 1 と set 2 の差を取り出す (set 1 には差があるが、set 2 には差がない) 結果:
新しいセットを取得、set 1 と set 2 は変更されないままになる
2 つのセットの差をなくす
構文: Set 1.difference_update (set 2)
機能: セット 1 とセット 2 を比較します。セット 1 では、セット 2 と同じ要素を削除します。
結果: セット 1 は変更され、セット 2 は変更されません。
2セットを合体
構文: Set 1.union (set 2)
関数: set 1 と set 2 を新しいセットに結合します
結果: 新しいセットを取得します。set 1 と set 2 は変更されません。
例:
my_set = {
"my", "you", "ergou", "二狗", "ergou"}
# 添加新元素
my_set.add("python")
my_set.add("学习")
print(f"my_set条件元素后的内容是{
my_set}")
# 移除元素
my_set.remove("you")
print(f"my_set移除元素后的内容是{
my_set}")
# 随机取出一个元素
my_set = {
"my", "you", "ergou", "二狗", "ergou"}
element = my_set.pop()
print(f"my_set集合被随机取出的元素是:{
element},取出元素后的内容是{
my_set}")
# 清空集合,clear
my_set.clear()
print(f"my_set清空后的内容是{
my_set}")
# 取2个集合的差集
set1 = {
1, 2, 3}
set2 = {
1, 5, 6}
set3 = set1.difference(set2)
print(f"取出差集后的结果是:{
set3}")
print(f"取差集后,原有的set1的内容:{
set1}")
print(f"取出差集后,原有的set2的内容:{
set2}")
# 消除2个集合的差集
set1 = {
1, 2, 3}
set2 = {
1, 5, 6}
set1.difference_update(set2)
print(f"消除差集后,set1的内容:{
set1}")
print(f"消除差集后,set2的内容:{
set2}")
# 2个集合合并为1个
set1 = {
1, 2, 3}
set2 = {
1, 5, 6}
set3 = set1.union(set2)
print(f"2个集合合并后的结果是:{
set3}")
print(f"合并后set1的内容:{
set1}")
print(f"合并后set2的内容:{
set2}")
操作結果:
my_set の条件要素の後の内容は {'python', 'ergou', 'you', 'my', 'ergou', 'learning'} 要素が削除された後の my_set の内容は {'python', ' ergou'
, 'my', 'Ergou', 'Learning'}
my_set セットからランダムに取り出される要素は ergou であり、要素が取り出された後の内容は {'you', 'Ergou', 'my' my_set をクリアした後の内容は
set()
で差分セットを取り出した後の結果: {2, 3}
差分セットを取り出した後の set1 の元の内容: {1, 2, 3}
差分セットを取り出した後、 set2 の元の内容: {1, 5, 6}
差分セットを削除した後、set1 の内容: {2, 3}
差分セットを削除した後、set2 の内容: {1, 5, 6}
結果2 つのセットをマージした後のセットは: {1, 2, 3, 5, 6}
マージ後の set1 の内容: {1, 2, 3}
マージ後の set2 の内容: {1, 5, 6}
セットに対する一般的な操作 - 長さのセット
コレクション内の要素の数を確認する
構文: len (set)
機能: セット内にある要素の数をカウントします。
結果: 整数の結果を取得します。
例:
# 统计集合元素数量len()
set1 = {
1, 2, 3, 4, 5, 1, 2, 3, 4, 5}
num = len(set1)
print(f"集合内的元素数量有:{
num}个")
操作結果:
セット内の要素の数は次のとおりです: 5
コレクションに対する一般的な操作 - for ループのトラバーサル
コレクションはループトラバーサルもサポートしています。
注: コレクションは添字インデックス付けをサポートしていないため、while ループはサポートされていません。
例:
# 集合的遍历
# 集合不支持下标索引,不能用while循环
# 可以用for循环
set1 = {
1, 2, 3, 4, 5}
for element in set1:
print(f"集合的元素有:{
element}")
演算結果:
集合の要素は次のとおりです: 1
集合の要素は次のとおりです: 2
集合の要素は次のとおりです: 3
集合の要素は次のとおりです: 4 集合の
要素は次のとおりです: 5
コレクションのよく使われる関数のまとめ
シリアルナンバー | 操作する | 説明する |
---|---|---|
1 | collection.add(要素) | コレクションに要素を追加する |
2 | collection.remove(要素) | 指定された要素をコレクションから削除します |
3 | コレクション.ポップ() | セットから要素をランダムに削除します |
4 | 集合.clear() | コレクションをクリアする |
5 | Set1.差分(set2) | 2 つのセットの差分セットを含む新しいセットを取得します。元の 2 つのセットの内容は変更されません。 |
6 | 集合1.difference_update(集合2) | セット 1 では、セット 2 に存在する要素を削除し、セット 1 が変更され、セット 2 は変更されません。 |
7 | Set1.union(set2) | 2 つのセットのすべての要素を含む新しいセットを取得します。元の 2 つのセットの内容は変更されません。 |
8 | レン(セット) | セット内の要素の数を記録する整数を取得します |
コレクション機能
1. 複数のデータを収容可能
2. 異なる種類のデータを収容可能 (混合)
3. データは障害保存(添え字インデックスはサポートされていません)
4.複製は許可されませんデータは存在します
。 5. 変更可能です (要素の追加または削除など)。
6. for ループはサポートされますが、添え字インデックスがサポートされていないため、while ループはサポートされません。
収集演習 - 情報の重複排除
既存のリスト: my_list = ['ergou', 'ergou', 'er', 'ergou', 'I', 'ergou']
お願い:
① 空のコレクションを定義する
② for ループを通してリストを走査する
③ for ループ内リストの要素をコレクションに追加します。
④最後に要素の重複を除去したコレクションオブジェクトを取得し、出力します。
my_list = ['二狗', 'ergou', 'er', 'ergou', '我', '二狗']
# 定义一个空集合
my_set = set()
# 通过for循环遍历列表
for element in my_list:
# 在for循环中将列表的元素添加至集合
my_set.add(element)
# 最终得到元素去重后的集合对象,并打印输出
print(f"列表的内容是:{
my_list}")
print(f"通过for循环后,得到的集合对象是:{
my_set}")
操作結果:
リストの内容は次のとおりです: ['ergou', 'ergou', 'er', 'ergou', 'I', 'ERGOU'] for ループを通過した後、取得されるコレクション オブジェクトは次のとおりです: {'I', 'エルゴウ
' 犬', 'エルゴウ', 'えー'}