Pythonの基礎学習用データコンテナ:set(セット)

データコンテナ:セット(コレクション)

リストは変更でき、繰り返し要素をサポートし、順序付けされます
。タプルと文字列は変更できず、繰り返し要素をサポートし、順序付けされます。

制限は、すべての要素が繰り返しの要素をサポートしていることです。

コレクションの主な特徴は、要素の重複をサポートしないこと(独自の重複排除機能がある)、およびそのコンテンツが順序付けされていないことです。

集合の定義

基本的な構文:

コレクション変数を定義します: 変数名 = {要素, 要素, ..., 要素}
空のコレクションを定義します: 変数名 = 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', 'エルゴウ
' 犬', 'エルゴウ', 'えー'}

おすすめ

転載: blog.csdn.net/weixin_44996886/article/details/132678446