# Python的數據類型的內置方法 - 可變與不可變數據類型 - 字典的內置方法 - 元組的內置方法 - 集合的內置方法 ## 可變與不可變數據類型 ### 常見的數據類型 ```python 常見的數據結構類型:鏈表、單鏈表、雙鏈表、迴圈列表、(C實現的 指針)、棧、樹、二叉樹、平衡二叉樹、完全 ...
Python的數據類型的內置方法
- 可變與不可變數據類型
- 字典的內置方法
- 元組的內置方法
- 集合的內置方法
可變與不可變數據類型
常見的數據類型
常見的數據結構類型:鏈表、單鏈表、雙鏈表、迴圈列表、(C實現的 指針)、棧、樹、二叉樹、平衡二叉樹、完全二叉樹、b樹、b+樹、b-樹等、隊列、圖等
在Python中,沒有值傳遞還是引用傳遞一說,都說可變類型與不可變類型
不可變數據類型
不可變類型:str、int、float
特點:值改變了,記憶體地址也改變、其實改變的不是原值、而是改變之後又生成一塊空間來保存新值
可變數據類型
可變類型: list、dict、
特點:值改變了,記憶體地址沒有改變,其實改變的是原值,只要你改變了值,原來的值就會發生變化
字典的內置方法
定義
# 定義:在{}內用逗號分隔開多元素,每一個元素都是key:value的形式,其中value可以是任意類型,而key則必須是不可變類型,通常key應該是str類型,因為str類型會對value有描述性的功能
info={'name':'tony','age':18,'sex':'male'} #本質info=dict({....})
# 也可以這麼定義字典
info=dict(name='tony',age=18,sex='male') # info={'age': 18, 'sex': 'male', 'name': 'tony'}
ic = {
'name': 'xxx',
'age': 18,
'hobby': ['play game', 'basketball']
}
取值
# 1. 取值
# print(ic['name'])
# print(ic['age'])
# print(ic['hobby'][1])
轉換
轉換1:
info=dict([['name','tony'],('age',18)])
print(info)
# 轉換2:fromkeys會從元組中取出每個值當做key,然後與None組成key:value放到字典中
print({}.fromkeys(('name','age','sex'),None) )
重點
# 賦值操作
'''如果key已經在字典中存在,那麼,就是對原來的值進行修改,如果不存在key值,就是新增一個鍵值對'''
dic = {
'name': 'xxx',
'age': 18,
'hobby': ['play game', 'basketball']
}
dic['gender'] = 'male' # {'name': 'xxx', 'age': 18, 'hobby': ['play game', 'basketball'], 'gender': 'male'}
# dic['name'] = 'jerry' # {'name': 'jerry', 'age': 18, 'hobby': ['play game', 'basketball'], 'gender': 'male'}
# print(dic)
#3.長度len
print(len(dic))
#4.成員運算
in和not in#判斷某個值是否在字典key
print('name' in dic)
True
#5刪除pop#通過字典的key來刪除字典對應的鍵
print(dic.pop('name'))
字典三劍客:keys() values() items()
# print(dic.keys()) # dict_keys(['name', 'age', 'hobby'])
#
# for i in dic.keys():
# print(i)
'''values方法把字典中得所有的value值組織成一個列表'''
# print(dic.values()) # dict_values(['xxx', 18, ['play game', 'basketball']])
#
# for i in dic.values():
# print(i)
print(dic.items()) # dict_items([('name', 'xxx'), ('age', 18), ('hobby', ['play game', 'basketball'])])
# for i in dic.items(): #
# print(i[0], i[1]) # ('name', 'xxx')
for i, j in dic.items(): #
print(i , j) # ('name', 'xxx')
需要掌握
需要掌握的操作:
#1.get取值
# print(dic.get('name')) # xxx
# print(dic.get('age')) # xxx
# print(dic.get('hobby')) # xxx
# print(dic.get('name1')) # None
'''get方法獲取key不存在的時候,不會報錯,會返回None,另外,還可以設置預設值'''
# print(dic.get('name1', 666)) # 666
"""以後字典取值推薦使用get方法,中括弧取值是可以用的"""
#2. 隨機刪除一組鍵值對,並將刪除的鍵值放到元組內返回
# print(dic.popitem()) # ('hobby', ['play game', 'basketball'])
# print(dic.popitem()) # ('hobby', ['play game', 'basketball'])
# print(dic) # {'name': 'xxx', 'age': 18}
# 3.update()
'''如果key值存在,則為修改,如果不存在,則為添加'''
# dic.update({'name': "jerry", 'gender': 'male'}) # 要記憶
# print(dic) # {'name': 'jerry', 'age': 18, 'hobby': ['play game', 'basketball'], 'gender': 'male'}
# 4初始化變數
dic = dict.fromkeys(['k1','k2','k3'],[])
dic = dict.fromkeys(['k1','k2','k3'],[666]) # {'k1': [666], 'k2': [666], 'k3': [666]}
dic = dict.fromkeys(['k1','k2','k3'],[666, 888]) # {'k1': [666, 888], 'k2': [666, 888], 'k3': [666, 888]}
print(dic) # {'k1': [], 'k2': [], 'k3': []} # 初始化變數
print(dic['k1'])
print(dic['k2'])
print(dic['k3'])
dic = {
'name': 'xxx',
'age': 18,
'hobby': ['play game', 'basketball']
}
'''setdefault:如果key值存在,則直接獲取key對應的value值,如果不存在,就返回第二個參數的值'''
print(dic.setdefault('name', 666)) # xxx
print(dic.setdefault('name1', 666)) # 666
元組的內置方法
定義
定義方式
countries = ("中國","美國","英國") # 常見的
本質:countries = tuple("中國","美國","英國")
作用
作用:元組與列表類似,也是可以存多個任意類型的元素,不同之處在於元組的元素不能修改,即元組相當於不可變的列表,'用於記錄多個固定不允許修改的值,單純用於取'
類型轉換
類型轉換
# 但凡能被for迴圈的遍歷的數據類型都可以傳給tuple()轉換成元組類型
pint(tuple('wdad')) # 結果:('w', 'd', 'a', 'd')
pinth(tuple([1,2,3])) # 結果:(1, 2, 3)
pyton(tuple({"name":"jason","age":18})) # 結果:('name', 'age')
python(tuple((1,2,3)) ) # 結果:(1, 2, 3)
python(tuple({1,2,3,4})) # 結果:(1, 2, 3, 4)
# tuple()會跟for迴圈一樣遍歷出數據類型中包含的每一個元素然後放到元組中
擴展
擴展:
'''面試題:'''
res = (111 ) # <class 'int'>
res1 = (123.1) # <class 'float'>
res2 = ('hello') # <class 'str'>
'''元組內部如果只有一個元組也要加逗號,否則就不是元組,只有加了逗號才是元組'''
'''以後只要是容器類型的數據類型,內部只要只有一個元素,末尾都推薦加一個逗號'''
"""
容器類型:只要是內部能夠存放多個元素的都可以稱為是容器類型
eg:list dict tuple set
不是容器類型的:int float str bool
"""
集合
定義,類型轉換,作用
1. 如何定義集合
s = set() # 空集合
2. 集合、list、tuple、dict一樣都可以存放多個值,但是集合主要用於:去重、關係運算
3. 類型轉換
pinth(s = set([1,2,3,4]))
>>> s1 = set((1,2,3,4))
>>> s2 = set({'name':'jason',})
>>> s3 = set('egon')
>>> s,s1,s2,s3
{1, 2, 3, 4} {1, 2, 3, 4} {'name'} {'e', 'o', 'g', 'n'}
4. 去重
## 1. 去重
# name_list = ['kevin', 'jerry', 'tony', 'oscar', 'tony', 'oscar', 'jerry', ]
#
# ## 要求:去除重覆元素
# # 思路:列表------------>集合
# s = set(name_list) # {'kevin', 'tony', 'jerry', 'oscar'}
# print(s)
#
# # 在把集合轉為列表
# print(list(s)) # ['tony', 'oscar', 'jerry', 'kevin']
'''集合的另外一個特點:無序'''
###
ll = [11, 22, 4, 55, 3, 66, 77, 99, 88, 10, 20, 30, 66, 77, 99, 88,]
# 1. 去重
# 轉為集合
# 2. 去重之後,保留原來的位置
# 思路:迴圈 遍歷
# 1. 先定義一個空列表來存儲去重之後的結果
new_list = []
# 2. 迴圈遍歷
for i in ll:
# 判斷new_list這個列表中是否已經存在這個值,如果存在了,就不在添加,如果不存在,則追加進去
if i not in new_list:
new_list.append(i)
# 如果在的話,就不用管了
print(new_list) # [11, 22, 4, 55, 3, 66, 77, 99, 88, 10, 20, 30]
friends1 = {"zero", "kevin", "jason", "egon"} # 用戶1的好友們
friends2 = {"Jy", "ricky", "jason", "egon"} # 用戶2的好友們
print(friends1)
# # 1.合集/並集(|):求兩個用戶所有的好友(重覆好友只留一個)
# 集合嫩不嫩單個取值?
print(friends1 | friends2) # {'Jy', 'ricky', 'egon', 'kevin', 'jason', 'zero'}-------[]
# 2.交集(&):求兩個用戶的共同好友
print(friends1 & friends2) # {'jason', 'egon'}
# # 3.差集(-):
# >>> friends1 - friends2 # 求用戶1獨有的好友
print(friends1 - friends2) # {'zero', 'kevin'}
print(friends2 - friends1) # {'Jy', 'ricky'}
# 4.對稱差集(^) # 求兩個用戶獨有的好友們(即去掉共有的好友)
print(friends1 ^ friends2) # {'Jy', 'kevin', 'zero', 'ricky'}
# 5.值是否相等(==)
# >>> friends1 == friends2
print(friends1 == friends2) # False
# 6.父集:一個集合是否包含另外一個集合
# 6.1 包含則返回True
# >>> {1,2,3} > {1,2}
print({1, 2, 3} > {1, 2}) # True
# 7.子集
print({1, 2, 3} < {1, 2}) # True