4铐姚、列表與字典

4.1 列表的創(chuàng)建和取值

列表中的數(shù)據(jù)按順序排列
列表有正序(0開始)與倒序(從右到左開始,-1開始)兩種索引
列表可以存儲(chǔ)任意類型數(shù)據(jù)妥泉,且可以重復(fù)

# 列表的取值
list = ['張三', '趙六', '李四', '王五', '趙六', '錢七', '孫八']
print(list)
# 取值的語法: 變量 = 列表變量[索引值]
zhaoliu = list[3]
print(zhaoliu)
zhaoliu = list[-3]
print(zhaoliu)

# 范圍取值: 列表變量 = 原列表變量[起始索引:結(jié)束索引]
# 在Python中列表范圍取值是"左閉右開"
list1 = list[1: 4]
print(list1)
print(list1[-1])

# 列表的index函數(shù)用于獲取指定元素的索引值
zhaoliu_index = list.index('趙六')
print(zhaoliu_index)       

4.2 遍歷列表(for循環(huán))

for .. in語句
for .. in語句專門用于遍歷列表椭微、元組等數(shù)據(jù)結(jié)構(gòu)
語法格式
for 迭代變量 in 可迭代對(duì)象:
循環(huán)體(必須縮進(jìn))

numList = [1,2,3,4,5,6,7,8,9,10]
for num in numList:
    if num % 2 == 0:
        print(num)

4.3 列表的反轉(zhuǎn)與排序

*反轉(zhuǎn):變量.reverse()
*排序:變量.sort() 默認(rèn)按照升序排列
變量.sort(reverse=True) 降序排列

numbers = [28,32,14,12,53,42]
print(number.reverse())
print(number.sort(reverse = True) ) 

冒泡排序
1.比較相鄰的元素,如果第一個(gè)比第二個(gè)大盲链,就交換他們兩個(gè)
2.對(duì)每一對(duì)相鄰元素做同樣的工作蝇率,從開始第一對(duì)到結(jié)尾的最后一對(duì)迟杂,最后的元素應(yīng)為最大值
3.針對(duì)所有的元素重復(fù)以上的步驟,出了最后的元素
4.持續(xù)每次對(duì)越來越少的元素重復(fù)上面的步驟本慕,直到?jīng)]有任何一對(duì)數(shù)字需要比較

numbers = [28,32,14,12,53,42,]
for i in range(len(numbers)-1):
    for j in range(len(numbers)-1-i):
        if numbers[j] > numbers[j+1]:
            numbers[j],numbers[j+1] = numbers[j+1],numbers[j]
print(numbers)

4.4 列表的增刪改查操作

list.append(新元素) 在列表末端追加新元素
list.insert(索引,新元素) 在指定索引插入新元素
list[索引] = 新值 更新指定索引位置數(shù)據(jù)
list[起始索引:結(jié)束索引] = 新列表 更新指定范圍數(shù)據(jù)
list.remove(元素) 刪除指定元素
list.pop(索引) 按索引刪除指定元素
list.pop[起始索引:結(jié)束索引] = [] (指定索引區(qū)間內(nèi)的元素全部刪除)

people = ['張三' , '李四' , '王五' , '趙六' , '錢七' , '孫八']
#插入新元素
people.insert(1,'趙五' )
print(people)
#更新指定索引位置數(shù)據(jù)
people[1] = '趙六'
print(people)
#刪除指定元素
people.remove( '孫八')
print(people)
#按索引刪除指定元素
people.pop(5)
#統(tǒng)計(jì)出現(xiàn)次數(shù)
cnt = people.count('趙六')  #返回2排拷,出現(xiàn)兩次
#追加操作
people.append(['楊九' , '吳十' ])  #真正的情況是,在原列表內(nèi)部尾端又增加了一個(gè)包含楊九吳十的新列表锅尘。
people.extend(['楊九' ,'吳十'])  #extend 則是將列表中的元素追加到原始列表末端
print(people)  

#in運(yùn)算符用于判斷數(shù)據(jù)是否在列表中存在监氢,存在:True, 不存在: False
b = '張三' in people
print(b)  #返回True

#copy 函數(shù)用于復(fù)制列表
people1 = people.copy( )  #如果改變people列表,people1列表是不受影響的藤违,因?yàn)樗鼈儌z是完全不同的存儲(chǔ)浪腐。
people2 = people  #people2 和 people列表時(shí)刻保持一致
print(people1) 
#is 身份運(yùn)算符用于判斷兩個(gè)變量是否指向同一塊內(nèi)存
print(people1 is people)  #返回False
print(people2 is people)  #返回True

#clear 用于清空列表
people.clear( )   #返回一個(gè)空的列表 [ ]
print(people)  #空列表
print(people1)  #完全不受影響
print(people2)  #與people列表保持一直,返回空列表   

4.5 字典的創(chuàng)建

字典采用鍵(key):值(value)形式表達(dá)數(shù)據(jù)
字典中key不允許重復(fù)顿乒,value允許重復(fù)
字典是可修改的议街,運(yùn)行時(shí)動(dòng)態(tài)調(diào)整存儲(chǔ)空間

#字典的創(chuàng)建
dict1 = { } #空的字典
dict2 = {'name':' 張三', 'sex': '男'}
print(type(dict2))  #輸出結(jié)果為dict

#利用dict函數(shù)創(chuàng)建字典
dict3 = dict(name='wangfeng',sex='male',hiredate='1997-10-20')
dict4 = dict.fromkeys(['name' , 'sex' , 'hiredate' , 'grade'] , 'N/A'] # 給字典設(shè)置默認(rèn)值,默認(rèn)值為None

4.6 字典的取值

employee =  {'name':' 張三', 'sex': '男','salary':2000,'job':'A'}
#字典的取值
name = employee['name']
print(name)
salary = employee['salary']
print(salary)

#輸出其他部門淆游,get函數(shù)可以給不存在的鍵加默認(rèn)值
print(employee.get('job'))
print(employee.get('dept' , '其他部門'))  

#如何判斷某一個(gè)key在字典中是否存在
#in 和 not in 成員運(yùn)算符
print('name' in employee)  #只是對(duì)key進(jìn)行判斷傍睹,返回True
print('dept' in employee)  #不存在的key,返回False

#如何遍歷字典
for key in employee:
          v = employee[key]  #可以獲取到每一個(gè)key所對(duì)應(yīng)的值
          print(v)
#items 包含的是每一個(gè)鍵值對(duì)
for key,value in employee.items(): 
           print(key)
           print(value )

4.7 字典更新與刪除

employee = {'name':' 張三', 'sex': '男'}
#字典更新/添加,原字典就有的k則更新v犹菱,沒有的就添加一個(gè)拾稳。
employee.update(salary= 2000,welfare = 1000 )
employee['grade '] = 'A'
print(employee)
#字典刪除,刪除對(duì)應(yīng)的k所在的鍵值對(duì)
employee.pop('welfare')
print(employee)
#刪除該字典中最后一個(gè)鍵值對(duì)
employee.popitem()
print(employee)
#清空字典
employee.clear()
print(employee)

4.8 字典的其它操作

emp = {'name':' 張三', 'sex': '男'}
#字典設(shè)置默認(rèn)值
emp.setdefault('grade','c')
#視圖對(duì)象
ks = emp.keys() #所有的鍵
print(ks)
vs = emp.values() #所有的值
print(vs)
its = emp.items() #所有的鍵值對(duì)
print(its)
#原始數(shù)據(jù)變化,視圖跟上變化
emp['hiredate'] = '1996-2'
print(ks)
print(vs)
print(its)
#老版本格式化輸出字典: 結(jié)構(gòu) "%(key)s,%(key)s" %emp
str="姓名:%(name)s,評(píng)級(jí):%(grade)s,入職時(shí)間:%(hiredate)s" %emp

#新版本的字符串格式化
emp_str = "姓名{name},評(píng)級(jí):{grade},入職時(shí)間:{hiredate}".format_map(emp)

4.9 散列值與字典的存儲(chǔ)原理

散列值(Hash)
*字典也稱為“哈希(Hash)”腊脱,對(duì)應(yīng)“散列值”
*散列值是從任何一種數(shù)據(jù)中創(chuàng)建數(shù)字“指紋”
*python中提供了hash()函數(shù)生成散列值
*hash("str") 相同的str在每一次運(yùn)行時(shí)對(duì)應(yīng)的散列值是一樣的
*int 的哈希值是它本身
字典的存儲(chǔ)原理
字典保存時(shí)访得,字典的key會(huì)經(jīng)過hash()函數(shù)進(jìn)行轉(zhuǎn)換,轉(zhuǎn)成對(duì)應(yīng)散列值陕凹,根據(jù)散列值在內(nèi)存中開辟一段空間悍抑,這段內(nèi)存會(huì)預(yù)留出空閑的空間,將哈希值經(jīng)過換算后找到對(duì)應(yīng)的內(nèi)存地址杜耙,將數(shù)據(jù)保存的對(duì)應(yīng)的內(nèi)存地址中搜骡。
數(shù)據(jù)并不是連續(xù)存儲(chǔ)的,和列表佑女、元組都不一樣记靡,在內(nèi)存中分散存儲(chǔ);數(shù)據(jù)保存也不是按照key的順序保存的团驱;字典的數(shù)據(jù)提取速度的極快的摸吠,因?yàn)樵趦?nèi)存中保存的具體的散列值,散列值對(duì)應(yīng)了唯一的內(nèi)存地址嚎花,要比列表提取數(shù)據(jù)高很多寸痢。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市紊选,隨后出現(xiàn)的幾起案子啼止,更是在濱河造成了極大的恐慌道逗,老刑警劉巖椿息,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘱支,死亡現(xiàn)場離奇詭異蒜焊,居然都是意外死亡赠潦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門朱躺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事拢操。” “怎么了舶替?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵令境,是天一觀的道長。 經(jīng)常有香客問我顾瞪,道長舔庶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任陈醒,我火速辦了婚禮惕橙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钉跷。我一直安慰自己弥鹦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布爷辙。 她就那樣靜靜地躺著彬坏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪膝晾。 梳的紋絲不亂的頭發(fā)上栓始,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音血当,去河邊找鬼幻赚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛歹颓,可吹牛的內(nèi)容都是我干的坯屿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼巍扛,長吁一口氣:“原來是場噩夢啊……” “哼领跛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起撤奸,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤吠昭,失蹤者是張志新(化名)和其女友劉穎喊括,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矢棚,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡郑什,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蒲肋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蘑拯。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖兜粘,靈堂內(nèi)的尸體忽然破棺而出申窘,到底是詐尸還是另有隱情,我是刑警寧澤孔轴,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布剃法,位于F島的核電站,受9級(jí)特大地震影響路鹰,放射性物質(zhì)發(fā)生泄漏贷洲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一晋柱、第九天 我趴在偏房一處隱蔽的房頂上張望优构。 院中可真熱鬧,春花似錦雁竞、人聲如沸俩块。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽玉凯。三九已至,卻和暖如春联贩,著一層夾襖步出監(jiān)牢的瞬間漫仆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國打工泪幌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盲厌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓祸泪,卻偏偏與公主長得像吗浩,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子没隘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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