昨日回顧
1.格式字符串
%d - 整數(shù)
%.nf - 保存小數(shù)點(diǎn)后n位
%c - 字符 能直接把數(shù)字(對(duì)應(yīng)的編碼值)轉(zhuǎn)換成字符
%s - 字符串
2.列表(list)
可變(支持增刪改)、有序(支持下標(biāo)操作)
列表中元素的增刪改查
查:列表[下標(biāo)] 切片:列表[開始下標(biāo):結(jié)束下標(biāo):步長]
改:列表[下標(biāo)] = 新值
增:列表.append(元素) 、 列表.insert(下標(biāo),元素)
刪:del 列表(下標(biāo)) 、 列表.pop(下標(biāo)):默認(rèn)刪除最后一位 、 列表.remove(元素)
補(bǔ)充列表相關(guān)知識(shí)
1.列表相關(guān)運(yùn)算
1)數(shù)學(xué)運(yùn)算:+,*
list1 = ['name', 'age']
list2 = [1, 2, 3]
new_list = list1 + list2
print(new_list)
列表1+列表2 - 將兩個(gè)列表中的元素合并產(chǎn)生一個(gè)新的列表(原列表不會(huì)發(fā)生改變)
列表*N - 列表中的元素重復(fù)N次產(chǎn)生新的列表
list1 = [1, 2, 3]
print(list1 * 3)
2)畢竟運(yùn)算: ==(列表完全一樣(袁術(shù)一樣,元素個(gè)數(shù)一樣,元素順序一樣)返回True) , !=
==(列表完全一樣(袁術(shù)一樣,元素個(gè)數(shù)一樣,元素順序一樣)返回True)
print([1, 2] == [1, 2])
>=, <=, >, <:
只支持相同位置上元素類型相同的兩個(gè)列表
2.內(nèi)置函數(shù)
len(列表):求列表長度、sum(列表):要求列表中的元素必須是數(shù)字、max(列表) 、min(列表)
list(數(shù)據(jù)) - 將指定的數(shù)據(jù)轉(zhuǎn)換成列表,所有的序列都可以轉(zhuǎn)換成列表
- 轉(zhuǎn)換的時(shí)候是將序列中的元素作為列表元素
3.相關(guān)方法
1).列表.count(元素) - 獲取指定元素在列表中出現(xiàn)的次數(shù)
2).extend(序列) - 將序列中的元素添加到列表中
3).列表.index(元素) - 獲取指定元素在列表中的下標(biāo),如果這個(gè)元素有多個(gè)只獲取第一個(gè),如果元素不存在會(huì)報(bào)錯(cuò)
list2 = [1, 0, 3, 4, 5, 8, 1, 0]
print((list2.index(0)))
4).列表.reverse() - 將列表中的元素倒敘,不會(huì)產(chǎn)生新的列表
list2.reverse()
print(list2)
補(bǔ)充:內(nèi)置函數(shù):reversed(序列) - 將序列中的元素倒敘,產(chǎn)生一個(gè)新的迭代器,原序列不會(huì)修改
5).列表.sort() - 對(duì)列表中的元素從小到大排序(列表中的元素類型一致并且支持比較運(yùn)算),不會(huì)產(chǎn)生新的列表
列表.sort(reverse=True) - 從大到小排序.
6).列表.copy() - 產(chǎn)生一個(gè)新的,列表中的元素和原列表一樣,相當(dāng)于:列表[:]
id(變量) - 獲取變量的地址
python中所有變量實(shí)質(zhì)都是直接保存的數(shù)據(jù)在內(nèi)存的地址
del_item
scores = [10, 50, 90, 89, 45, 70]
# 刪除列表中所有小于60的數(shù)字
for score in scores:
if score < 60:
scores.remove(score)
print(scores)
# 問題:通過元素刪除的時(shí)候可能出現(xiàn)刪不干凈的問題,(解決方法)
scores = [10, 50, 90, 89, 45, 70]
for score in scores[:]: # 遍歷切片保證每個(gè)數(shù)據(jù)都能取到
if score < 60:
scores.remove(score)
print(scores)
# 通過下標(biāo)刪除滿足要求的元素的時(shí)候,出現(xiàn)下標(biāo)越界的錯(cuò)誤
'''
scores = [10, 50, 90, 89, 45, 70]
for index in range(len(scores)):
if scores[index] < 60:
del scores[index]
print(scores)
'''
scores = [10, 50, 90, 89, 45, 70]
index = 0
while index < len(scores):
if scores[index] < 60:
del scores[index]
continue
index += 1
print(scores)
tuple
1.什么是元祖(tuple)
元祖就是不可變的列表,作為序列不可變(不支持增刪改)但是有序(支持下標(biāo)操作)
(元素1,元素,元素3.....) , 元素的要求和列表一樣
2.查 - 獲取元素(和列表一樣)
tuple1 = (1, 2, 3, 4)
print(tuple1[0], tuple1[-1])
print(tuple1[0:5:2])
遍歷 (和列表一樣)
for item in tuple1:
print(item)
for index in range(len(tuple1)):
print(index, tuple1[index])
3.數(shù)學(xué)運(yùn)算、 比較運(yùn)算、in / not in、len(),max(),min(),sum(),tuple()和對(duì)應(yīng)的列表操作是一樣的
4.元祖專有特點(diǎn)
1)只有一個(gè)元素的元祖:需要在這個(gè)元素的后面加逗號(hào)
tuple1 = (10,)
print(type(tuple1))
2)表示元祖的值可以不用小括號(hào),(直接將多個(gè)元素用逗號(hào)隔開,也表示一個(gè)元祖)
tu2 = 10, 20, 'abc'
print(tu2, type(tu2))
3)a.讓變量的個(gè)數(shù)和元祖中元素的個(gè)數(shù)保持一致(必須個(gè)數(shù)一致),可以讓變量依次取出元祖中的元素
tu = (100, 'abc')
x, y = tu
print(x, y)
3)b.通過多個(gè)變量去獲取元祖元素的時(shí)候,可以在某個(gè)變量的前面加來將這個(gè)變量編程列表獲取不帶的變量去剩下的數(shù)據(jù)
!!!注意帶*的變量只能有一個(gè)
student = ('小明', 30, 60, 50, 100, 175)
name, age, *scores, height = student
print(name, age, scores, height)
dict
1.什么是字典(dict)
字典是python內(nèi)置的一個(gè)容器型數(shù)據(jù)類型,可變(支持增刪改),無序(不支持下標(biāo)操作)
{鍵值對(duì)1,鍵值對(duì)2,...} = {鍵1:值1, 鍵2:值2,....} 鍵:值 ->鍵值對(duì)
鍵(key):a.不可變 b.唯一 (實(shí)際開發(fā)建議用字符串)
值(value):和列表元素要求一樣
!!!注意:鍵值對(duì)是成對(duì)出現(xiàn)的;字典存數(shù)據(jù),實(shí)質(zhì)要存的是值,鍵是值的索引
dict1 = {'a': 100, 'b': 'abc', 'c': [1, 2]}
print(dict1)
dict1 = {'a': 100, 'b': 'abc', 'c': [1, 2]}
print(dict1)
2.什么時(shí)候用字典
如果同時(shí)保存多個(gè)數(shù)據(jù)是具有相同意義的數(shù)據(jù),用列表;
如果同時(shí)保存的多個(gè)數(shù)據(jù)意義不同,就使用字典
3.查, - 獲取字典的值
獲取key對(duì)應(yīng)的值:字典[key] - 獲取字典中指定key對(duì)應(yīng)的值
dog = {'name': '大黃', 'type': '土狗', 'color': 'yellow', 'age': 3}
print(dog['type'])
print(dog['gender']) # KeyError: 'gender'
獲取key對(duì)應(yīng)的值:
字典.get(key) - 獲取字典中指定的key對(duì)應(yīng)的值,如果key值不存在返回默認(rèn)值None
字典.get(key, 默認(rèn)值) - 獲取字典key對(duì)應(yīng)的值,如果 key不存在返回指定的默認(rèn)值
None是python中的關(guān)鍵詞,表示數(shù)據(jù)為空或者沒有的意思
print(dog.get('name'))
print(dog.get('gender'))
print(dog.get('gender', '公狗'))
2)遍歷:
直接遍歷字典拿到的是key
print('-----------------')
dog = {'name': '大黃', 'type': '土狗', 'color': 'yellow', 'age': 3}
for key in dog:
print(key, dog[key])
后面三種要看的懂,不建議用.
print('2------------------')
for x in dog.values():
print(x)
for key in dog.keys():
print(key)
for key, value in dog.items():
print(key, value)
4.增/改 -添加鍵值對(duì)
語法:1).字典[key] = 值 - 當(dāng)key不存在的時(shí)候就是添加鍵值對(duì),
當(dāng)key存在的時(shí)候就是去修改key對(duì)應(yīng)的值
2).字典.setdefault(key, value) -只能添加不能修改
5.刪
del 字典.[key]
注意如果key不存在會(huì)報(bào)錯(cuò)
dog = {'name': '大黃', 'type': '土狗', 'color': 'yellow', 'age': 3}
del dog['age']
print(dog)
字典.pop(key) - 從字典中取出key對(duì)應(yīng)的值,結(jié)果是key對(duì)應(yīng)的值
n = dog.pop('name')
print(dog, n)
6.相關(guān)運(yùn)算:
只支持比較運(yùn)算符:
print({'a': 10, 'b': 20} == {'b': 20, 'a': 10}) # True
in / not in
key in 字典 - 判斷字典中是否存在某個(gè)key對(duì)應(yīng)的鍵值對(duì)
student = {'name': '小明', 'age': 13}
print('小明' in student) # False
print('name' in student) # True
# len(),max(),min()
dict() - 本身是一個(gè)序列,序列中的元素是小序列,小序列必須有且只有兩個(gè)元素,而且這兩個(gè)元素中的第一個(gè)元素是不可變的
注意:取最大值,最小值是取的key的最大值和最小值
注意:字典轉(zhuǎn)列表/元祖的時(shí)候,是將字典的key取出來作為列表/元祖的元素
print(list(dog))
7.相關(guān)方法
1).字典.clear() - 清空字典
2).字典.copy() - 復(fù)制字典的內(nèi)容,產(chǎn)生一個(gè)新的字典
3).dict.fromkeys(序列,值) - 創(chuàng)建一個(gè)新的字典,將序列中的元素作為新字典的key,指定的值作為每個(gè)元素對(duì)應(yīng)的值
new_dict = dict.fromkeys('abcd', 0)
print(new_dict)
4).字典1.update(字典2) - 將字典2中的鍵值對(duì)添加到字典1中
dict1 = dict.fromkeys('abcd', 0)
dict2 = dict.fromkeys('cze', 0)
dict1.update(dict2)
print(dict1)