元組、布林、集合的內建方法

随机昵称yi發表於2024-05-14

元組的內建方法

【一】元組的定義

() 在元組的內部,只有一個元素的時候要加逗號 ','

【二】型別強轉

轉換其他資料型別為元組,整數型別布林型別不可以強轉

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看是否變化,

發生變化則為不可變型別,反之為可變資料型別。

相關文章