元組的內建方法
【一】元組的定義
() 在元組的內部,只有一個元素的時候要加逗號 ','
【二】型別強轉
轉換其他資料型別為元組,整數型別和布林型別不可以強轉
print(tuple([1,2,3]))
# (1, 2, 3)
print(tuple('qwer'))
# ('q', 'w', 'e', 'r')
print(tuple({1,2,3,3}))
# (1, 2, 3)
print(tuple({'1':'2'}))
# ('1',)
【三】索引取值
num_tuple= (1,2,3,4,5,6,7)
print(num_tuple[0])
# 1
num_tuple[0] = 990
報錯 不支援根據索引修改指定索引的值
切片 顧頭不顧尾
print(num_tuple[0:5])
# (1, 2, 3, 4, 5)
【四】計算元素個數
print(len(1,2,3))
# 3
【五】成員運算
print(4 in (1,2,3))
# False
【六】遍歷迴圈
for i in (1,2,3,4,5)
print(i)
1
2
3
4
5
for + range 索引取值 顧頭不顧尾
for i in range(1,7):
print(i)
1
2
3
4
5
6
【七】元組拼接
字串
print('qwer' + '12')
# qwer12
列表 加法運算,得到一個兩個列表元素拼到一起的新列表
print([1,23,3] + [1,23,4])
# [1, 23, 3, 1, 23, 4]
元組 得到一個兩個元組元素拼到一起的新元組
print((1,2,3) + (1,2,33))
# (1, 2, 3, 1, 2, 33)
【八】*號運算
得到一個新元組
print((1,2,3) * 6)
# (1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3)
布林型別
內建方法
強制型別轉換
print(bool(0))
print(bool(1))
print(bool(2))
False
True
True
集合
【一】集合定義
{}每一個元素都是單獨的
區分於字典,因為字典是鍵值對
集合內部的元素不能放可變型別
【二】特性
無序性
數字型別的hash值是死的,字串的hash值會變
都輸出三次看輸出內容
print({1,2,3,4,3242,13,123})
# {1, 2, 3, 4, 3242, 123, 13}
# {1, 2, 3, 4, 3242, 123, 13}
# {1, 2, 3, 4, 3242, 123, 13}
print({1,2,3,4,'a',3242,'adads',13,123})
# {'a', 1, 2, 3, 4, 3242, 'adads', 13, 123}
# {1, 2, 3, 4, 'adads', 3242, 'a', 13, 123}
# {1, 2, 3, 4, 3242, 13, 'adads', 'a', 123}
當集合內放了字串,輸出時字串位置不固定
去重性
在一個集合內不會出現重複的元素
【三】其他型別的資料強轉
強轉時會沿用集合的特性,無序、去重
# 字串
name = 'qwre'
print(set(name))
# {'w', 'q', 'e', 'r'}
# {'r', 'w', 'q', 'e'}
每次輸出都不一樣
# 字典 只轉換鍵,且無序
user = {'username' : 'qwer' , 'password' : 'asdawd'}
print(set(user))
# {'password', 'username'}
#轉換值 無序
print(set(user.value))
# {'qwer', 'asdawd'}
# {'asdawd', 'qwer'}
【四】集合操作
【1】新增元素
# add方法 只能接收一個元素
num_set = {1,2,3}
num_set.add(1234)
print(num_set)
# {1, 2, 3, 1234}
num_set.add(1234,23) #輸出會報錯
# 把註冊過的使用者全部仍到集合中
# 利用集合的去重性判斷當前使用者是否註冊過
username_tuple = {'qew','qweasd'}
username = input(>>>>>>)
username_tuple.add(username)
【2】刪除元素
# remove方法 刪除集合中不存在的值時會報錯
num_set.remove(3)
print(num_set)
# {1, 2, 1234}
num_set.remove(3)
刪除兩次報錯
# discard方法 刪除不存在的元素不會報錯
num_set.discard(3)
# None 不報錯
#pop 在其他資料型別中可以指定引數,但是在集合中不能指定 會彈出最後一個引數(誰倒黴誰在後)
num_set.pop()
print(num_set.pop())
print(num_set)
# 1
# {2, 1234} 1被隨機排到了最後,所以1被彈出了
【五】集合的運算
交集:兩集合共有的元素
並集:兩個集合去重後的所有元素
補集:大集合A 包含小集合B
A中B沒有的所有元素叫做B對於A的補集
差集:你有我沒有的
判斷兩集合是否相等
set1 = {1, 2, 3, 4, 5}
set2 = {2, 4}
is_equal = set1 == set2
print(is_equal)
# False
l_old = ['a', 'b', 1, 'a', 'a']
s = set(l_old) # 將列表轉成了集合
print(s)
# {'b', 'a', 1}
l_new = list(s) # 再將集合轉回列表
print(l_new) # 去除了重複,但是打亂了順序
# ['b', 'a', 1]
# 針對不可變型別,並且保證順序則需要我們自己寫程式碼實現,例如
l_second = [
{'name': 'lili', 'age': 18, 'sex': 'male'},
{'name': 'jack', 'age': 73, 'sex': 'male'},
{'name': 'tom', 'age': 20, 'sex': 'female'},
{'name': 'lili', 'age': 18, 'sex': 'male'},
{'name': 'lili', 'age': 18, 'sex': 'male'},
]
new_l_second = []
for dic in l_second:
if dic not in new_l_second:
new_l_second.append(dic)
print(new_l_second)
# 結果:既去除了重複,又保證了順序,而且是針對不可變型別的去重
'''
[
{'name': 'lili', 'age': 18, 'sex': 'male'},
{'name': 'jack', 'age': 73, 'sex': 'male'},
{'name': 'tom', 'age': 20, 'sex': 'female'}
]
'''
# 【六】計算長度
# len()
# 【七】支援遍歷
# 【八】支援成員運算
【六】計算長度
num_set = {1,2,3}
print(len(num_set))
# 3
【七】支援遍歷
去重後輸出
num_set = {1,2,3,123,3,4,1,}
for i in num_set:
print(i)
1
2
3
4
123
【八】支援成員運算
num_set = {1,2,3,123,3,4,1,}
if 2 in num_set:
print('yes')
# yes
資料型別總結
# 【一】按儲存值的個數進行劃分
# 存一個: 數字、字串
# 很多個:列表、元祖、字典
# 【二】按照訪問方式分
# 【1】直接訪問:數字 布林
# 【2】按照索引:列表、集合、元組
# 【3】按照關鍵字:字典 對映型別
# 【三】按照可變和不可變區分
# 【1】不可變
# 字串、數字、布林、元組,集合
# 【2】可變
# 列表,字典,
# 【四】可迭代與不可迭代
# 【1】可迭代就是可以被for遍歷 元組,集合 、列表,字典,字串、
# 【2】不可迭代 數字、布林
區分可變不可變的依據:更改元素過後檢視他的ID看是否變化,
若發生變化則為不可變型別,反之為可變資料型別。