Python 集合、序列基础知识
生活随笔
收集整理的這篇文章主要介紹了
Python 集合、序列基础知识
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
集合
Python 中set與dict類似,也是一組key的集合,但不存儲value。由于key不能重復,所以,在set中,沒有重復的key。
key為不可變類型,即可哈希的值。
num = {} print(type(num)) # <class 'dict'> num = {1, 2, 3, 4} print(type(num)) # <class 'set'>集合的兩個特點:
無序(unordered)和唯一(unique)1、集合的創建
- 先創建對象再加入元素。
- 在創建空集合的時候只能使用s = set(),因為s = {}創建的是空字典。
- 直接把一堆元素用花括號括起來{元素1, 元素2, …, 元素n}。
- 重復元素在set中會被自動被過濾。
- 使用set(value)工廠函數,把列表或元組轉換成集合。
- 去掉列表中重復的元素
由于set存儲的是無序集合,所以我們不可以為集合創建索引或執行切片(slice)操作,也沒有鍵(keys)可用來獲取集合中元素的值,但是可以判斷一個元素是否在集合中。
2、訪問集合中的值
- 使用len()內建函數得到集合的大小
- 可以通過in或not in判斷一個元素是否在集合中已經存在
3、集合的內置方法
- set.add(elmnt)用于給集合添加元素,如果添加的元素在集合中已存在,則不執行任何操作。
- set.update(set)用于修改當前集合,可以添加新的元素或集合到當前集合中,如果添加的元素在集合中已存在,則該元素只會出現一次,重復的會忽略。
- set.remove(item)用于移除集合中的指定元素。如果元素不存在,則會發生錯誤。
- set.discard(value)用于移除指定的集合元素。remove()方法在移除一個不存在的元素時會發生錯誤,而 discard()方法不會。
- set.pop()用于隨機移除一個元素。
由于 set 是無序和無重復元素的集合,所以兩個或多個 set 可以做數學意義上的集合操作。
- set.intersection(set1, set2) 返回兩個集合的交集。
- set1 & set2返回兩個集合的交集。
- set.intersection_update(set1, set2)交集,在原始的集合上移除不重疊的元素。
- set.union(set1, set2)返回兩個集合的并集。
- set1 | set2 返回兩個集合的并集。
- set.difference(set)返回集合的差集。
- set1 - set2 返回集合的差集。
- set.difference_update(set) 集合的差集,直接在原來的集合中移除元素,沒有返回值。
- set.symmetric_difference(set)返回集合的異或。
- set1 ^ set2返回集合的異或。
- set.symmetric_difference_update(set)移除當前集合中在另外一個指定集合相同的元素,并將另外一個指定集合中不同的元素插入到當前集合中。
- set.issubset(set)判斷集合是不是被其他集合包含,如果是則返回 True,否則返回 False。
- set1 <= set2 判斷集合是不是被其他集合包含,如果是則返回 True,否則返回 False。
- set.issuperset(set)用于判斷集合是不是包含其他集合,如果是則返回 True,否則返回 False。
- set1 >= set2判斷集合是不是包含其他集合,如果是則返回 True,否則返回 False。
- set.isdisjoint(set)用于判斷兩個集合是不是不相交,如果是返回 True,否則返回 False。
4、集合的轉換
例子:
se = set(range(4)) li = list(se) tu = tuple(se)print(se, type(se)) # {0, 1, 2, 3} <class 'set'> print(li, type(li)) # [0, 1, 2, 3] <class 'list'> print(tu, type(tu)) # (0, 1, 2, 3) <class 'tuple'>5、不可變集合
Python 提供了不能改變元素的集合的實現版本,即不能增加或刪除元素,類型名叫frozenset。需要注意的是frozenset仍然可以進行集合操作,只是不能用帶有update的方法。
- frozenset([iterable])返回一個凍結的集合,凍結后集合不能再添加或刪除任何元素。
序列
在 Python 中,序列類型包括字符串、列表、元組、集合和字典,這些序列支持一些通用的操作,但比較特殊的是,集合和字典不支持索引、切片、相加和相乘操作。
1、針對序列的內置函數
- list(sub)把一個可迭代對象轉換為列表。
- tuple(sub)把一個可迭代對象轉換為元組。
- str(obj)把obj對象轉換為字符串
- len(s) 返回對象(字符、列表、元組等)長度或元素個數。
- s– 對象。
- max(sub)返回序列或者參數集合中的最大值
- min(sub)返回序列或參數集合中的最小值
- sum(iterable[, start=0])返回序列iterable與可選參數start的總和。
-
sorted(iterable, key=None, reverse=False)對所有可迭代的對象進行排序操作。
iterable -- 可迭代對象。key -- 主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自于可迭代對象中,指定可迭代對象中的一個元素來進行排序。reverse -- 排序規則,reverse = True 降序 , reverse = False 升序(默認)。返回值 -- 返回重新排序的列表。
- reversed(seq) 函數返回一個反轉的迭代器。
- seq – 要轉換的序列,可以是 tuple, string, list 或 range。
- enumerate(sequence, [start=0])用于將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。
- zip(iter1 [,iter2 [...]])
- 用于將可迭代的對象作為參數,將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的對象
- 我們可以使用 list() 轉換來輸出列表。
- 如果各個迭代器的元素個數不一致,則返回列表長度與最短的對象相同,利用 * 號操作符,可以將元組解壓為列表。
總結
以上是生活随笔為你收集整理的Python 集合、序列基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java timezone_Java T
- 下一篇: 玩转Nacos参数配置!多图勿点