1. 程式人生 > >Python--集合

Python--集合

隨機數 ron ado 宋體 mar 提示 super 指定元素 索引

集合(字典的近親

集合的兩個功能:

?集合可以實現去重的功能;

?集合可以實現關系測試; 交集, 差集,並集, 是否子集, 是否沒有交集........

集合set的定義

?集合是不重復的數據結構;

# 如果花括號裏面為空,則是字典類型;

技術分享圖片

# 定義集合的第一種方式 ;

技術分享圖片

?工廠方法定義集合時, 括號裏面是可叠代的對象, eg: 數值類型不可以;

# 定義集合的第二種方式 ; 定義一個空的集合;

技術分享圖片

應用: 如何實現列表去重?

?轉換為集合數據類型; set(列表)

?字典的fromkeys方法實現;

# 實現列表去重 1 :

技術分享圖片

# 實現列表去重 2 :

技術分享圖片

集合的特性

?集合是無序的, 不重復的數據類型;

?因此不支持索引

,也不支持切片;也不支持重復;也不支持連接;

?支持成員操作符;

?支持for循環;

技術分享圖片

# 集合支持 for 循環,是可叠代的;

技術分享圖片

集合的增刪改查

?

技術分享圖片

技術分享圖片

- (關系測試操作)

# 交集

方法1

技術分享圖片

方法2

技術分享圖片

# 並集

方法1

技術分享圖片

方法2

技術分享圖片

# 差集

方法1

技術分享圖片

方法2

技術分享圖片

# 對等差分

方法1

技術分享圖片

方法2

技術分享圖片

?s1.issubset(s2)

?s1.issuperset(s2)

?s1.isdisjoint(s2)

技術分享圖片

?s.remove刪除集合指定元素, 如果不存在,則報錯;

技術分享圖片

?s.discard刪除集合指定元素, 如果不存在,do nothing;

技術分享圖片

?s.clear清空集合元素

技術分享圖片

應用:

(華為機試題)題目描述

明明想在學校中請一些同學一起做一項問卷調查

,為了實驗的客觀性, 他先用計算機生成了N11000

之間的隨機整數(N≤1000), N是用戶輸入的,對於 其中重復的數字,只保留一個,把其余相同的數去

,不同的數對應 著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順 序去找同學做調

查。請你協助明明完成去重排序的工作;

?提示:

?生成隨機數,

import random

random.randint(1,1000)

?列表的去重

技術分享圖片

總結

?可變數據類型: 列表, 字典, 集合

?不可變數據類型: 數值類型, 字符串, 元組

- 可變數據類型實現某個功能, 直接改變可變的數據類型;

- 不可變數據類型實現某個功能,需要將結果賦值給另外一個變量

;

是否實現for循環

?可叠代數據類型: str, list, tuple, dict, set

?不可叠代數據類型:數值類型

是否支持索引,切片, 重復和連接特性

?有序的數據類型: str, list, tuple

?無序的數據類型: dict, set


Python--集合