04.Python基础_列表_元组_字典_集合
文章目錄
- 1.列表
- 1.1list
- 2.列表的索引和切片
- 練習1 提取數(shù)據(jù)
- 練習2 用索引取出下面list的指定元素:
- 3.修改列表的元素值
- 4.列表的常用方法
- 4.1append添加元素(與extend有區(qū)別)
- 4.2練習 使用for循環(huán),把隨機生成的數(shù)字一次添加到列表中去
- 4.3 extend 添加數(shù)據(jù)(與append有區(qū)別)
- 4.4 extend 與 append的區(qū)別
- 4.5 insert插入元素
- 4.6 查找元素 in not in index count
- 4.6.1 in的用法 檢測該元素是否在里面
- 4.6.2not取反
- 4.6.3 Index索引數(shù)組的位置(與find類似)
- 4.6.4 find用法
- 4.6.5count 查找數(shù)組的數(shù)量
- 4.7 刪除元素del pop remove
- 4.7.1del:根據(jù)下標進行刪除
- 4.7.2 pop:刪除最后一個元素
- 4.7.3 remove:根據(jù)元素的值進行刪除
- 4.8 對元素排序sort reverse
- 4.8.1 sort 排序
- 4.8.2 reverse方法是將list逆置
- 4.9 練習
- 4.10 練習
- 4.11 列表生成式List Comprehensions
- 4.12 元組(Turple)
- 4.13 字典dict
- 4.13.1 方法1 for循環(huán)
- 4.13.2 創(chuàng)建字典
- 4.14 刪除字典元素
- 4.15 遍歷字典
- 4.16 將其他數(shù)據(jù)處理成字典
- 4.17 集合 Set
1.列表
1.1list
列表的作用就是存放一堆東西,以便后續(xù)進行排序, 篩選,提取等操作,弄一個列表, 先放進去
列表中的元素,沒有數(shù)據(jù)類型的限制,可以為任何數(shù)據(jù)類型
2.列表的索引和切片
list是一種有序的集合,可以隨時添加和刪除其中的元素。 也就是說列表是內(nèi)部元素可變的一個容器mutable
列表和字符串一樣,是一種可迭代對象.
因此可以和字符串一樣進行索引和切片.語法方面是一樣的.
注意:左開右閉
索引是從0,1,2,3,4,5,6,7,8…
l = [1,2,3,4,5,6,7,8,9,0]l[2] 3案列1
數(shù)值型
l = [1,2,3,4,5,6,7,8,9,0] l[-2:0:-3] l[1::2] 結果 [9, 6, 3] [2, 3, 4, 5, 6, 7, 8] [2, 4, 6, 8, 0]案例2
# 以下三個結果是相同的 L = [1,2,3,4,5,] L[0:3:1] #默認從第一個開始 L[:3:] #默認步長為1 L[:3] #默認從第一個開始且步長為1 結果 [1, 2, 3]案例3
字符型
L[起始位置:終止位置:步長]
步長:正數(shù)表示從左到右,負數(shù)表示從右到左
索引是從0,1,2,3,4,5,6,7,8…
練習1 提取數(shù)據(jù)
L = ['python','java', 'C', 'PHP']從列表中提取出, python,PHP ,[‘java’,‘C’],[‘PHP’,‘java’]
L = ['python','java', 'C', 'PHP'] L[0] 'python'L[3] 'PHP'L[1:3] ['java', 'C']L[-1:-4:-2] ['PHP', 'java']練習2 用索引取出下面list的指定元素:
L = [['Apple', 'Google', 'Microsoft'],['Java', 'Python', 'Ruby', 'PHP'],['Adam', 'Bart', 'Lisa'] ] # 打印Apple: L = [['Apple', 'Google', 'Microsoft'],['Java', 'Python', 'Ruby', 'PHP'],['Adam', 'Bart', 'Lisa'] ] # 打印Python: print(L[1][1]) # 打印Lisa: print(L[2][2]3.修改列表的元素值
通過元素的索引位置來索引元素
L = ['python','java','C','PHP']L[0] = 'R' L ['R', 'java', 'C', 'PHP']L[-1] = "JavaScript" L ['R', 'java', 'C', 'JavaScript']L[1:3] = 'CSS','HTML' L ['R', 'CSS', 'HTML', 'JavaScript']4.列表的常用方法
4.1append添加元素(與extend有區(qū)別)
通過append可以向列表添加元素 添加數(shù)組或者字符串
L = ['Superman','Hulk','Spiderman'] L.append('Leifengxia') L ['Superman', 'Hulk', 'Spiderman', 'Leifengxia']4.2練習 使用for循環(huán),把隨機生成的數(shù)字一次添加到列表中去
L = [] for i in range(1,10):L.append(i) L [1, 2, 3, 4, 5, 6, 7, 8, 9] L = [] for i in range(1,10):if i % 2 == 0:L.append(i) L [2, 4, 6, 8]4.3 extend 添加數(shù)據(jù)(與append有區(qū)別)
通過extend可以將另一個集合中的元素逐一添加到列表中
a = [1,2] b = [3,4] a.extend(b) a [1, 2, 3, 4]4.4 extend 與 append的區(qū)別
extend 與append相同點在于都可以添加數(shù)據(jù),不過對數(shù)據(jù)添加的形式不一樣
append添加元素是以整個數(shù)組一起加進去
而extend添加數(shù)據(jù)是以一個一個字符串的形式添加進去
4.5 insert插入元素
insert(index, object) 在指定位置index前插入元素object
a = ['插','入','素'] a.insert( 2,'元') a['插', '入', '元', '素']4.6 查找元素 in not in index count
test = ['插', '入', '元', '素','元']4.6.1 in的用法 檢測該元素是否在里面
'入' in test True4.6.2not取反
'元' not in test False4.6.3 Index索引數(shù)組的位置(與find類似)
test.index('元') 24.6.4 find用法
s ='xyz' s.find('z') 24.6.5count 查找數(shù)組的數(shù)量
test.count('元') 24.7 刪除元素del pop remove
4.7.1del:根據(jù)下標進行刪除
test = ['能','不','能','給','我','一','首','歌','的','時間'] del test [1:3] test ['能', '給', '我', '一', '首', '歌', '的', '時間']4.7.2 pop:刪除最后一個元素
默認刪除最后一個元素 可以指定刪除某一個元素 直接輸入數(shù)組的索引值就好了
movieName = ['加勒比海盜','駭客帝國','第一滴血','指環(huán)王','霍比特人','速度與激情'] movieName.pop() movieName4.7.3 remove:根據(jù)元素的值進行刪除
指定刪除某一個元素
movieName = ['加勒比海盜','駭客帝國','第一滴血','指環(huán)王','霍比特人','速度與激情'] movieName.remove('駭客帝國') movieName4.8 對元素排序sort reverse
排序(sort, reverse)
4.8.1 sort 排序
sort方法是將list按特定順序重新排列,默認為由小到大,參數(shù)reverse=True可改為倒序,由大到小。
默認由小到大
a = [1, 4, 2, 3] a a.sort() a [1, 2, 3, 4]4.8.2 reverse方法是將list逆置
reverse = True表示從大到小 默認False
a = [1, 4, 2, 3] a.sort(reverse=True) a [4, 3, 2, 1]4.9 練習
有以下列表
L = [‘最怕空氣突然安靜’,‘最怕朋友突然的關心’,‘最怕回憶’,‘突然翻滾絞痛著’,‘不平息’,‘最怕忽然’,‘聽到你的消息’]
M = [‘想念如果會有聲音’,‘不愿那是悲傷的哭泣’,‘終于讓自己屬于’,‘我自己’]
將M列表中的歌詞合并到L中,使歌詞串聯(lián)在一起.
在列表中插入缺少的一句歌詞,使順序連續(xù).
查找列表中是否含有元素"最怕回憶"
刪除列表中的"最怕回憶"
將歌詞拼接成一個字符串
將歌詞翻轉,使用join方法
4.10 練習
小應用: 分別打印出字符串的索引值和字符串本身
colors = ['red', 'green', 'blue', 'yellow']n = 0 for i in colors:print(n, "--->", colors[n])n+=10 ---> red 1 ---> green 2 ---> blue 3 ---> yellow這樣也可以,效果也是一樣
for i in range(len(colors)):print(i , "---->", colors[i])這個也可以
for i, color in enumerate(colors):print(i, "---->", color)4.11 列表生成式List Comprehensions
如果我們想要生成一個由1 - 10的數(shù)字組成的列表,都有什么辦法呢?
1.
4.12 元組(Turple)
Python的元組與列表類似,不同之處在于元組的元素不能修改。元組使用小括號,列表使用方括號。
aTuple = ('et',77,99.9,'OK') aTuple ('et', 77, 99.9, 'OK') aTuple[0] 'et'不過元組的元素不能修改
但是如果我這樣寫
現(xiàn)在,aTuple這個tuple不能變了,它也沒有append(),insert()這樣的方法。其他獲取元素的方法和list是一樣的,你可以正常地使用aTuple[0],aTuple[-1],但不能賦值成另外的元素。
不可變的tuple有什么意義?因為tuple不可變,所以代碼更安全。
如果可能,能用tuple代替list就盡量用tuple。
tuple的陷阱:
當你定義一個tuple時,在定義的時候,tuple的元素就必須被確定下來,比如:
tp = (1, 2) tp (1, 2)tuple的第二個陷阱
tp5 = ('a', 'b', ['A', 'B']) tp5 ('a', 'b', ['A', 'B'])表面上看,tuple的元素確實變了,但其實變的不是tuple的元素,而是list的元素。tuple一開始指向的list并沒有改成別的list,所以,tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變。即指向’a’,就不能改成指向’b’,指向一個list,就不能改成指向其他對象,但指向的這個list本身是可變的!
4.13 字典dict
Python內(nèi)置了字典:dict的支持,dict全稱dictionary,在其他語言中也稱為map,使用鍵-值(key-value)存儲,具有極快的查找速度。
舉個例子,FIFA18球員能力值排名, 我們要根據(jù)球員的名字查找對應的成績,如果用list實現(xiàn),需要兩個list:
names = ['克里斯蒂亞諾·羅納爾多', '里奧·梅西', '內(nèi)馬爾','路易斯·蘇亞雷斯', '曼努埃爾·諾伊爾', '羅伯特·萊萬多夫斯基', '塞爾吉奧·拉莫斯' ] scores = [94, 93, 92, 92, 92, 91, 90]4.13.1 方法1 for循環(huán)
給你一個球員名字,要查找對應的成績,就先要在names中找到對應的位置,再從scores取出對應的評分,list越長,耗時越長。
names = ['羅納爾多', '梅西', '內(nèi)馬爾','蘇亞雷斯', '諾伊爾', '萊萬多夫斯基', '拉莫斯' ] scores = [94, 93, 92, 92, 92, 91, 90]for i in range(len(names)):if names[i]=="內(nèi)馬爾":print(scores[i])4.13.2 創(chuàng)建字典
字典由鍵(key)和對應值(value)成對組成。字典也被稱作關聯(lián)數(shù)組或哈希表?;菊Z法如下:
dict = {‘Alice’: ‘2341’, ‘Beth’: ‘9102’, ‘Cecil’: ‘3258’}
注意: 每個鍵與值用冒號隔開(:),每對用逗號,每對用逗號分割,整體放在花括號中({})。 鍵必須獨一無二,但值則不必。
值可以取任何數(shù)據(jù)類型,但必須是不可變的,如字符串,數(shù)組或元組。
如果用dict實現(xiàn),只需要一個“名字”-“評分”的對照表,直接根據(jù)名字查找評分,無論這個表有多大,查找速度都不會變慢。用Python寫一個dict如下
d = {'C羅納爾多': 94, '梅西': 93, '內(nèi)馬爾': 92, '蘇亞雷斯':92, '諾伊爾':92, '萊萬多夫斯基':91, '拉莫斯':90}type(d)dictlen(d)7d['內(nèi)馬爾']92我們平時使用字典的時候, 是在字典的索引表里(比如部首表)查這個字對應的頁碼,然后直接翻到該頁,找到這個字。無論找哪個字,這種查找速度都非???#xff0c;不會隨著字典大小的增加而變慢。
dict就是這種實現(xiàn)方式,給定一個名字,比如’梅西’,dict在內(nèi)部就可以直接計算出梅西對應的存放評分的“頁碼”,也就是93這個數(shù)字存放的內(nèi)存地址,直接取出來,速度非常快。
你可以猜到,這種key-value存儲方式,在放進去的時候,必須根據(jù)key算出value的存放位置,這樣,取的時候才能根據(jù)key直接拿到value。
把數(shù)據(jù)放入dict的方法,除了初始化時指定外,還可以通過key放入:
字典賦值或更改
判斷key是否存在
可以通過 in判斷key是否存在
"大羅納爾多" in d False通過dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:
d.get('托馬斯', -1) -1 d.get('梅西', -1) 934.14 刪除字典元素
d.pop(‘key’) 必須要傳值,因為字典是無序的
d.popitem() 隨機刪除一個
del d[‘key’]
d.clear() 清空字典
4.15 遍歷字典
for k,v in d.items(): #遍歷字典print(k,v)無須轉換成list 格式,保留了字典原有的特性
for k, v in d.items():print(k,v)C羅納爾多 94 梅西 93 內(nèi)馬爾 92 蘇亞雷斯 92 諾伊爾 92 萊萬多夫斯基 91 拉莫斯 90 克羅斯 90 李毅 66 托尼·克羅斯 884.16 將其他數(shù)據(jù)處理成字典
names = ['羅納爾多', '梅西', '內(nèi)馬爾','蘇亞雷斯', '諾伊爾', '萊萬多夫斯基', '拉莫斯' ] scores = [94, 93, 92, 92, 92, 91, 90] # 首先創(chuàng)建一個空字典 d = {} for number,name in enumerate(names):d[name] = scores[number] d{'羅納爾多': 94,'梅西': 93,'內(nèi)馬爾': 92,'蘇亞雷斯': 92,'諾伊爾': 92,'萊萬多夫斯基': 91,'拉莫斯': 90}4.17 集合 Set
集合(set)是一個無序的不重復元素序列。
set和dict類似,也是一組key的集合,但不存儲value。由于key不能重復,所以,在set中,沒有重復的key。
其實集合就是一個沒有value的dict
# 要創(chuàng)建一個set,需要提供一個list作為輸入集合:s = set([1, 2, 3]) s {1, 2, 3}要注意的是set是無序的, 雖然這里1, 2, 3是順序顯示的
s = set([2, 1, 3]) s {1, 2, 3}set 一個常規(guī)應用時過濾重復值
s = set([1, 1, 2, 2, 3, 3]) s {1, 2, 3}可以通過add(key)方法添加元素到set中,但對于已經(jīng)存在的值不會有效果
s.add(4) s {1, 2, 3, 4} # remove(key) s.remove(4) s {1, 2, 3}兩個set可以做數(shù)學意義上的交集、并集等操作
s1 = set([1, 2, 3]) s2 = set([2, 3, 4]) s1 & s2 {2, 3} s1.intersection(s2) {2, 3} s1 | s2 {1, 2, 3, 4} s1.union(s2) {1, 2, 3, 4}總結
以上是生活随笔為你收集整理的04.Python基础_列表_元组_字典_集合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 03.Python基础--控制流语句-顺
- 下一篇: python基础总结---安装、语法、变