day8-筆記dictSetTuple

一.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)方法

  1. 列表.count(元素) - 獲取指定元素在列表中出現(xiàn)的次數(shù), 結(jié)果是整數(shù)
print([1, 2, 3, 1, 4].count(1))  # 2
  1. 列表.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'>
  1. 讓變量的個(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.查 - 獲取字典的值

  1. 獲取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. 字典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}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市酥馍,隨后出現(xiàn)的幾起案子辩昆,更是在濱河造成了極大的恐慌,老刑警劉巖旨袒,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汁针,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡砚尽,警方通過(guò)查閱死者的電腦和手機(jī)施无,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)必孤,“玉大人猾骡,你說(shuō)我怎么就攤上這事》筇拢” “怎么了兴想?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)赡勘。 經(jīng)常有香客問(wèn)我嫂便,道長(zhǎng),這世上最難降的妖魔是什么闸与? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任毙替,我火速辦了婚禮,結(jié)果婚禮上践樱,老公的妹妹穿的比我還像新娘厂画。我一直安慰自己,他們只是感情好映胁,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布木羹。 她就那樣靜靜地躺著,像睡著了一般解孙。 火紅的嫁衣襯著肌膚如雪坑填。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天弛姜,我揣著相機(jī)與錄音脐瑰,去河邊找鬼。 笑死廷臼,一個(gè)胖子當(dāng)著我的面吹牛苍在,可吹牛的內(nèi)容都是我干的绝页。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼寂恬,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼续誉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起初肉,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤酷鸦,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后牙咏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體臼隔,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年妄壶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了摔握。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丁寄,死狀恐怖氨淌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情狡逢,我是刑警寧澤宁舰,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站奢浑,受9級(jí)特大地震影響蛮艰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜雀彼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一壤蚜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧徊哑,春花似錦袜刷、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至梢莽,卻和暖如春萧豆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背昏名。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工涮雷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人轻局。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓洪鸭,卻偏偏與公主長(zhǎng)得像样刷,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子览爵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容