python初學-元組、集合


元組:
元組基本和列表一樣,區別是 元組的值一旦創建 就不能改變了
tup1=(1,2,3,4,5)
print(tup1[2])
-------------------------------------
元組中只包含一個元素時,需要在元素后面添加逗號
 
不加逗號:tup1=(10)
print(type(tup1))
<class 'int'>
 
加逗號:tup1=(10,)
print(type(tup1))
<class 'tuple'>
-----------------------------------------
元組中的元素值是不允許修改的,但我們可以對元組進行連接組合
url=('192.168.85.130','lzc','root',123456)
addr=('abc','def','hijk','nmn')
tup3=url+addr
print(tup3)
------------------------------------------
一個可變的元組
tup=('a','b',['A','B'])
print(tup[2][1])
tup[2][0]='x'
tup[2][1]='y'
print(tup)
 
結果
B
('a', 'b', ['x', 'y'])
表面上看,tuple的元素確實變了,但其實變的不是tuple的元素,而是list的元素。tuple一開始指向的list並沒有改成別的list,所以,tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變。即指向'a',就不能改成指向'b',指向一個list,就不能改成指向其他對象,但指向的這個list本身是可變的!表面上看,tuple的元素確實變了,但其實變的不是tuple的元素,而是list的元素。tuple一開始指向的list並沒有改成別的list,所以,tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變。即指向'a',就不能改成指向'b',指向一個list,就不能改成指向其他對象,但指向的這個list本身是可變的!
總之一句話:元組指向的對象不能變,但是元組中列表的值可以改變
-----------------------------------------
 
tup=('192.168.35.130','lzc','root',123456,'mysql')
tup2=(1,2,3,4,5,)
# 計算元素個數
# print(len(tup))
# 返回元素中的最小值(必須是int類型,不然會報錯)
# print(min(tup2))
# 列表轉換為元組
# list=[1,2,3,4,5,6]
# tup3=tuple(list)
# print(type(tup))
# 查:
# print(tup[0])
# 取元組的的下標為2的值
# print(tup[2])
# 去元組前面3個元素的值
# print(tup[:3])
# 鏈接兩個元組
# tup3=tup+tup2
# print(tup3)
# 刪除元組
# del tup2
# print(tup2)
對比兩個元組:
import operator
tup=('192.168.35.130','lzc','root',123456,'mysql')
tup2=(1,2,3,4,5,)
print(operator.eq(tup,tup2))
 
------------------------------------------
# 計算元素個數
 
# 返回元素中的最小值、最大值
 
# 列表轉換為元組
 
# 查:
# 取元組的的下標為2的值
# 去元組前面3個元素的值
 
# 鏈接兩個元組
 
# 刪除元組
 
#對比兩個元組:
 
******************************************************
集合:
集合:集合是一種數據類型,一個類似列表的東西
與列表相比:它的特點是無序的,不重復 也就是說集合中是沒有重復的數據
 
set擁有類似dict的特點:可以用{}花括號來定義;其中的元素沒有序列,也就是是非序列類型的數據;而且,set中的元素不可重復,這就類似dict的鍵.
set也有繼承了一點list的特點:如可以原處修改(事實上是一種類別的set可以原處修改,另外一種不可以)
 
定義集合:
定義一個空集合
s=set()
print(type(s))
 
1、通過強制類型轉換
nums=[1,1,2,3,34,2]
num_set=set(nums)
 
2、直接定義集合
num_set1={1,2,3,4,5,6} #與定義字典的區別是 字典中含有冒號 集合沒有
 
set1.add(2222) #添加元素
print('添加元素:',set1)
set1.update([111,222,333]) #把list里面的東西更新進去 如果是字符串 會一個一個得添加進去
 
s1={1,2,4,6,7,8,9,90}
s1.update('ljk') #需要先update 然后才能打印
print(s1)
結果:
{1, 2, 4, 6, 7, 8, 9, 11, 'j', 'k', 22, 'l', 90}
#update 字符串是以元素下標為個體添加進去,如'abc'那就是將a,b,c分別添加進去
# update 列表也是以元素下標為個體添加進去 ['abc','lkj'] 將'abc'和'lkj添加進去
 
print(set1)
set1.remove(111) #刪除元素,如果元素不存在就會報錯
print('刪除元素,如果元素不存在就會報錯:',set1)
set1.pop() #刪除一個隨記的元素,並返回刪除的元素
print('刪除一個隨記的元素,並返回刪除的元素:',set1)
set1.discard('ddd') #刪除的元素存在,刪除,不存在不做任何處理
print('刪除的元素存在,刪除,不存在不做任何處理:',set1)
print(set1.clear()) 將set全部清空
 
set1={1,2,3,457,78}
set2={1,2,4,6,78}
set3={1,2}
print('交集:',set1.intersection(set2))
print('並集:',set1.union(set2))
print('並集2:',set1 | set2)
print('差集:',set1.difference(set2))
print('差集2:',set1 - set2)
 
print('判斷set3是不是set2的子集:',set3.issubset(set2))
print('判斷set2是不是set3的子集:',set2.issuperset(set3))
print('判斷是否有交集:',set1.isdisjoint(set3))
print('^ 除相同元素以外的元素',set1^set2)
 
-------------------------------------------------------------------------------------------------------
# 創建一個空集合
# s=set()
# print(type(s))
# 定義一個集合
# s={1,2,3,4,}
# print(type(s))
# s1={1,2,4,6,7,8,9,90}
# s2={2,3,5,4,6,'f'}
# # 添加元素
# s1.add('kskksks')
# print(s1)
#添加元素update
# s1.update([11,22])
# s1.update('ljk')
# print(s1)
# 字符串是以元素下標為個體添加進去,如'abc'那就是將a,b,c分別添加進去
# 列表也是以元素下標為個體添加進去 ['abc','lkj'] 將'abc'和'lkj添加進去
#刪除元素
# s1.remove(90)
# print(s1)
# #隨機的刪除一個元素
# s1.pop()
# print(s1)
#刪除的元素村存在就刪除,不存在就不刪除
# s1.discard(190)
# print(s1)
#刪除整個集合
# print(set1.clear())
#list轉換為集合
# l=[1,2,3,4,5,7]
# s1=set(l)
# print(type(s1))
#取兩個集合間的交集
# s1={1,2,4,6,7,8,9,90}
# s2={2,3,5,4,6,'f'}
# print(s1.intersection(s2))
# 取兩個集合的並集(兩種方式)
# s1={1,2,3,5}
# s2={4,3,6,2}
# print(s1.union(s2))
# print(s1|s2)
#取差集 (兩種方式)
# s1={1,2,3,5}
# s2={4,3,6,2}
# print(s1.difference(s2))
# print(s1-s2)
 
set1={1,2,3}
set2={1,2,3,4,6,7}
# 判斷兩個集合是否有交集
# print(set1.isdisjoint(set2))
#判斷set1是不是set2的子集
# print(set1.issubset(set2))
#判斷set1是不是set2的子集
# print(set1.issuperset(set2))
# '判斷是否有交集
# print(set1.isdisjoint(set2))
# 除相同元素以外的元素
# print(set1^set2)
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM