一.recode
1.格式字符串
%s,%d,%.Nf,%c
name = '喜愛(ài)'
age = 18
message = name + '今年' + str(age) + '歲'
message = '%s今年%d %c' % (name, age, 0xe4ff)
print(message)
2.列表(list)
可變(支持增刪改)敛瓷、有序(支持下標(biāo)操作)
列表中元素的增刪改查
1)查: 查單個(gè)元素: 列表[下標(biāo)] - 結(jié)果是元素
切片:列表[開(kāi)始下標(biāo):結(jié)束下標(biāo):步長(zhǎng)] - 是列表
遍歷 - 結(jié)果是元素
2)增: 列表.append(元素)\ 列表.insert(下標(biāo),元素)
3)刪: del 列表[下標(biāo)] \ 列表.remove(元素) \ 列表.pop(下標(biāo))
4)改: 列表[下標(biāo)] = 新值
二.list
1.列表相關(guān)運(yùn)算
1)數(shù)學(xué)運(yùn)算: +, *
列表1+列表2 - 將兩個(gè)列表中的元素合并產(chǎn)生一個(gè)新的列表(原列表不會(huì)發(fā)生改變)
列表*N - 列表中的元素重復(fù)N次產(chǎn)生新的列表
list1 = [1, 2, 3]
list2 = ['name', 'age']
new_list = list1 + list2
print(new_list, list1, list2)
print(list1*3)
list3 = [1]*100
print(list3)
2)比較運(yùn)算: ==, !=
list4 = [1, 2]
print([1, 2] == [2, 1]) # False
print([1, 2] != [2, 1]) # True
print([1, 2] == list4) # True
, <, >=, <= 只支持相同位置上元素類型相同的兩個(gè)列表 (了解)
2.內(nèi)置函數(shù)
len(列表)取具、sum(列表) - 要求列表中的元素必須是數(shù)字肃晚、max(列表)、min(列表)
list(數(shù)據(jù)) - 將指定數(shù)據(jù)轉(zhuǎn)換成列表, 所有的序列都可以轉(zhuǎn)換成列表,比如: 字符串,列表、字典寻馏、集合、元祖核偿、range诚欠、迭代器、生成器等. 轉(zhuǎn)換的時(shí)候是將序列中的元素作為列表元素
print(list('abcd')) # ['a', 'b', 'c', 'd']
print(list(range(5))) # [0, 1, 2, 3, 4]
print(list(str(123))) # ['1', '2', '3']
nums = ['10', '23', '4']
print(''.join(nums)) # 10234
3.相關(guān)方法
- 列表.count(元素) - 獲取指定元素在列表中出現(xiàn)的次數(shù), 結(jié)果是整數(shù)
print([1, 2, 3, 1, 4].count(1)) # 2
- 列表.extend(序列) - 將序列中的元素添加到列表中, 結(jié)果None
list1 = []
list1.extend('abc')
print(list1)
list1.extend(range(3))
print(list1)
list1.extend(['張飛', '關(guān)羽', '趙云'])
print(list1)
list1.extend(['呂布'])
print(list1)
3)列表.index(元素) - 獲取指定元素在列表中的下標(biāo)漾岳,如果這個(gè)元素有多個(gè)只獲取第一個(gè)轰绵,如果元素不存在會(huì)報(bào)錯(cuò)
list2 = [1, 0, 1, 2, '張飛', '關(guān)羽', '趙云', '呂布']
print(list2.index('張飛'))
# print(list2.index('諸葛亮')) # ValueError: '諸葛亮' is not in list
4)列表.reverse() - 將列表中的元素倒序, 不會(huì)產(chǎn)生新列表
# 補(bǔ)充: 內(nèi)置函數(shù): reversed(序列) - 將序列中的元素倒序產(chǎn)生一個(gè)新的迭代器, 原序列不會(huì)修改
list1 = [1, 2, 3]
result = reversed('abc')
# for item in result:
# print(item)
print(list(result))
print(list1)
5)列表.sort() - 對(duì)列表中的元素從小到大排序(列表中的元素類型一致并且支持比較運(yùn)算), 不會(huì)產(chǎn)生新的列表
列表.sort(reverse=True) - 從大到小排序
scores = [10, 100, 89, 20, 67, 34, 9]
scores.sort()
print(scores)
scores.sort(reverse=True)
print(scores)
6)列表.copy() - 產(chǎn)生一個(gè)新的列表蝗羊,列表中的元素和原列表一樣藏澳,相當(dāng)于: 列表[:]
list1 = [1, 2, 3]
list2 = list1
list3 = list1.copy()
print(list2, list3)
list1.append(10)
print(list2, list3)
# id(變量) - 查看變量中實(shí)質(zhì)存儲(chǔ)的地址
# python所有變量實(shí)質(zhì)都是直接保存的數(shù)據(jù)在內(nèi)存中的地址
print(id(list1), id(list2), id(list3))
三.delitem
# 刪除列表中所有小于60的數(shù)字
# 問(wèn)題1: 通過(guò)元素刪除的時(shí)候可能出現(xiàn)刪不干凈的問(wèn)題
scores = [10, 50, 90, 89, 45, 70]
for score in scores:
if score < 60:
scores.remove(score)
print(scores, score) # [50, 90, 89, 20, 70]
"""
scores = [10, 50, 90, 89, 45, 70]
score = 10 if 10 < 60 scores.remove(10) scores = [50, 90, 89, 45, 70]
score = 90 if 90 < 60
score = 89 if 89 < 60
score = 45 if 45 < 60 scores.remove(45) scores = [50, 90, 89, 70]
"""
# 解決問(wèn)題1:
scores = [10, 50, 90, 89, 45, 70]
scores2 = scores[:]
for score in scores2:
if score < 60:
scores.remove(score)
del scores2 # score2只是提供遍歷用的,用完后沒(méi)有其他用處耀找,可以直接刪除
print(scores, score)
# 上面的簡(jiǎn)寫(xiě)
scores = [10, 50, 90, 89, 45, 70]
for score in scores[:]:
if score < 60:
scores.remove(score)
print(scores, score)
"""
scores = [10, 50, 90, 89, 45, 70]
scores2 = [10, 50, 90, 89, 45, 70]
score = 10 if 10<60 scores.remove(10) scores = [50, 90, 89, 45, 70]
score = 50 if 50<60 scores.remove(50) scores = [90, 89, 45, 70]
score = 90 if 90<60
score = 89 if 89<60
score = 45 if 45<60 scores.remove(45) scores = [90, 89,70]
score = 70 if 70<60
"""
# 問(wèn)題2:通過(guò)下標(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]
for index in range(6)
index = range(6) index = (0,1,2,3,4,5)
index = 0 if scores[0]<60 if 10<60 del scores[0] scores = [50, 90, 89, 45, 70]
index = 1 if scores[1]<60 if 90<60
index = 2 if scores[2]<60 if 89<60
index = 3 if scores[3]<60 if 45<60 del scores[3] scores = [50, 90, 89, 70]
index = 4 if scores[4]<60 (out of range)
"""
# 解決問(wèn)題2:
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)
"""
scores = [10, 50, 90, 89, 45, 70]
index = 0
while 0 < 6 if 10<60 del scores[0] scores = [50, 90, 89, 45, 70]
while 0 < 5 if 50<60 del scores[0] scores = [90, 89, 45, 70]
while 0 < 4 if 90<60 index += 1 index = 1
while 1 < 4 if 89<60 index += 1 index = 2
while 2 < 4 if 45<60 del scores[2] scores = [90, 89,70]
while 2 < 3 if 70<60 index += 1 index = 3
while 3 < 3
print(scores) - [90, 89,70]
"""
四.tuple
1.什么是元祖(tuple):
元祖就是不可變的列表, 作為序列不可變(不支持增刪改)但是有序(支持下標(biāo)操作)
(元素1, 元素2, 元素3,....) , 元素的要求和列表一樣
2.查 - 獲取元素 (和列表一樣)
tuple1 = ('abc', 2, 3, 4)
print(tuple1[0], tuple1[-1])
# print(tuple1[10]) # IndexError: tuple index out of range
print(tuple1[0:5:2]) # ('abc', 3)
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)的列表操作是一樣的
print((1, 2, 3)+('a', 'b', 'c'))
print((1, 2, 3) * 2)
print(100 in (1, 2, 3))
print(tuple('abcd'), tuple(range(4)), tuple(['abc', 100]))
4.元祖專有特點(diǎn)
1)只有一個(gè)元素的元祖, 需要在這個(gè)元素的后面加一個(gè)逗號(hào)
2)元祖的值可以去掉小括號(hào),(直接將多個(gè)元素用逗號(hào)隔開(kāi)狞悲,也表示一個(gè)元祖)
tu2 = 10, 20, 30, 'abc'
print(tu2, type(tu2)) # <class 'tuple'>
- 讓變量的個(gè)數(shù)和元祖中元素的個(gè)數(shù)保持一致撮抓,可以讓變量依次取出元祖的中的元素
point = (100, 200)
x, y = point
print(x, y)
x, y = (100, 200)
x, y = 100, 200
a = 10
b = 20
a, b = (b, a) # a, b = (b,a) = (20, 10) a = 20, b=10
3.2) 通過(guò)多個(gè)變量去獲取元祖元素的時(shí)候,可以在某個(gè)變量的前面加來(lái)將這個(gè)變量變成列表獲取不帶的變量取剩下的數(shù)據(jù)
注意:這兒帶*的變量只能有一個(gè)
student = ('小明', 30, 60, 50, 100, 175)
name, age, *scores, height = student
print(name, scores) # 小明 [60, 50, 100]
name, *x = student
print(name, x) # 小明 [30, 60, 50, 100, 175]
*x, y, z = student
print(x, y) # ['小明', 30, 60, 50] 100
五.dict1
1.什么是字典(dict)
字典是python內(nèi)置的一個(gè)容器型數(shù)據(jù)類型, 可變(支持增刪改)摇锋、無(wú)序(不支持下標(biāo)操作)
{鍵1:值1, 鍵2:值2, 鍵3:值3,....} 鍵:值 -> 鍵值對(duì)
鍵(key): a.不可變 b.唯一 (實(shí)際開(kāi)發(fā)建議用字符串)
值(value): 和列表元素的要求一樣
注意: 鍵值對(duì)是成對(duì)出現(xiàn)丹拯;字典存數(shù)據(jù),實(shí)質(zhì)要存的是值荸恕,鍵是值的索引
dict1 = {'a': 100, 'b': 'abc', 'c': [1, 2], 'd': {'a': 100}}
print(dict1)
dict1 = {'a': 100, 'b': 'abc', 'a': [1, 2]}
print(dict1) # {'a': [1, 2], 'b': 'abc'}
2.什么時(shí)候用字典
如果同時(shí)保存的多個(gè)數(shù)據(jù)是具有相同意義的數(shù)據(jù)乖酬,用列表;如果同時(shí)保存的多個(gè)數(shù)據(jù)的意義不同融求,就使用字典
person1 = ['余婷', 18, 100, 40, 155, 50]
person2 = {'name': '余婷', 'age': 18, 'score': 100, 'height': 155, 'weight': 50}
print(person1[0]) # 余婷
print(person2['name']) # 余婷
allstudents = [
{'name': '張三', 'age': 18, 'tel': '110', 'dog':{'sex': '母狗', 'color': '白色', 'name': '大黃'}},
{'name': '小明', 'age': 20, 'tel': '220'},
{'name': '張三', 'age': 18, 'tel': '110'}
]
print(allstudents[0]['dog']['color']) # 白色
3.查 - 獲取字典的值
- 獲取key對(duì)應(yīng)的值: 字典[key] - 獲取字典中指定key對(duì)應(yīng)的值
注意: 如果key不存在咬像,會(huì)報(bào)KeyError
dog1 = {'name': '大黃', 'type': '中華田園犬', 'color': 'yellow', 'age': 3}
print(dog1['type'])
# print(dog1['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ù)為空或者沒(méi)有的意思
dog1 = {'name': '大黃', 'type': '中華田園犬', 'color': 'yellow', 'age': 3}
print(dog1.get('color'))
print(dog1.get('gender'))
print(dog1.get('gender', '公狗'))
2)遍歷
直接遍歷字典拿到是key
dog1 = {'name': '大黃', 'type': '中華田園犬', 'color': 'yellow', 'age': 3}
print('===========遍歷===========')
for key in dog1:
print(key, dog1[key])
# 遍歷字典選第一種方法生宛,后面的方法要看得懂
print('===========遍歷2===========')
print(dog1.values())
for value in dog1.values():
print(value)
print('===========遍歷3===========')
for key in dog1.keys():
print(key)
print('===========遍歷4===========')
print(dog1.items())
for key, value in dog1.items():
print(key, value)
4.增/改 - 添加鍵值對(duì)
字典[key] = 值 - 當(dāng)key不存在的時(shí)候就是添加鍵值對(duì)县昂;當(dāng)key存在的時(shí)候,就是修改key對(duì)應(yīng)的值
film = {'name': '流浪地球', '主演': '吳京', 'time': '2019-2-5'}
film['票房'] = '40億'
print(film)
# {'name': '流浪地球', '主演': '吳京', 'time': '2019-2-5', '票房': '40億'}
film['time'] = '2019-2-6'
print(film)
# {'name': '流浪地球', '主演': '吳京', 'time': '2019-2-6', '票房': '40億'}
film.setdefault('a', 10)
print(film)
{'name': '流浪地球', '主演': '吳京', 'time': '2019-2-6', '票房': '40億', 'a': 10}
# 字典.setdefault(key, value) - 只能添加鍵值對(duì)陷舅,不能修改
film.setdefault('name', '戰(zhàn)狼2')
print(film)
5.刪
del 字典[key] - 刪除字典中key對(duì)應(yīng)的鍵值對(duì), 如果key不存在會(huì)報(bào)錯(cuò)
film = {'name': '流浪地球', '主演': '吳京', 'time': '2019-2-5'}
del film['time']
print(film)
# 字典.pop(key) - 從字典中取出key對(duì)應(yīng)的值倒彰,結(jié)果是key對(duì)應(yīng)的值
name = film.pop('name')
print(film, name)
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': 20, 'tel': '16362738493'}
print('小明' in student) # False
print('name' in student) # True
len(), max(), min()
dict() - 本身是一個(gè)序列,序列中元素是小序列蔑赘,小序列必須有且只有2個(gè)元素狸驳,而且這個(gè)2個(gè)元素中的第一個(gè)元素是不可變的
注意:取最大值最小值是取key的最大值和最小值;字典轉(zhuǎn)列表/元祖的時(shí)候预明,是將字典的key取出來(lái)作為列表/元祖的元素
student = {'name': '小明', 'age': 20, 'tel': '16362738493'}
print(len(student))
print(max(student)) # tel
print(dict(['cb', ['a', 100], [1000, [1]] ])) # {'c': 'b', 'a': 100, 1000: [1]}
print(list(student)) # ['name', 'age', 'tel']
7.相關(guān)方法
1)字典.clear() - 清空字典
student = {'name': '小明', 'age': 20, 'tel': '16362738493'}
student.clear()
print(student) # {}
2)字典.copy() - 復(fù)制字典的內(nèi)容缩赛,產(chǎn)生一個(gè)新的字典
student = {'name': '小明', 'age': 20, 'tel': '16362738493'}
student1 = student.copy()
student1['name'] = '小花'
print(student)
dict.fromkeys(序列,值) - 創(chuàng)建一個(gè)新的字典耙箍,將序列中的元素作為新字典的key,指定的值作為每個(gè)key對(duì)應(yīng)的值
new_dict = dict.fromkeys(['name', 'age', 'gender'], None)
print(new_dict) # {'name': None, 'age': None, 'gender': None}
person_keys = ['name', 'age', 'gender']
person1 = dict.fromkeys(person_keys, None)
person2 = dict.fromkeys(person_keys, None)
- 字典1.update(字典2) - 將字典2中的鍵值對(duì)添加到字典1中
dict1 = {'a': 10, 'b': 20, 'z': 100}
dict1.update({'c': 30, 'b': 200})
print(dict1) # {'a': 10, 'b': 200, 'z': 100, 'c': 30}