python學(xué)習(xí)之?dāng)?shù)據(jù)結(jié)構(gòu)

列表

list=[val1,val2,val3,val4]
  • 列表中每一個(gè)元素是可變的;
  1. 列表中每個(gè)元素是有序的,每個(gè)元素都有相應(yīng)的位置;
  2. 列表可以容納python中任何對(duì)象

查詢(xún)(只接受位置索引[0])

Weekday = ['Monday','Tuesday','Wednesday','Thursday','Friday']#創(chuàng)建一個(gè)列表
print(Weekday[0])#索引0位置的元素

添加insert(插入一個(gè)元素)extend(添加多個(gè)元素)

fruit = ['pineapple','pear']
fruit.insert(1,'grape')#列表中插入一個(gè)元素用.insert()方法
print(fruit)
fruit[0:0] = ['Orange']#也可以用這種方式插入
print(fruit)

刪除remove()或者del關(guān)鍵字實(shí)現(xiàn)

fruit = ['pinapple','pear','grape']
fruit.remove('grape')#用.remove()方法實(shí)現(xiàn)刪除
print(fruit)
del fruit[0:2]#還可以用del關(guān)鍵字來(lái)刪除
print(fruit)

替換

fruit[0] = 'Grapefruit'#索引變量被后面賦值
print(fruit)

檢索

periodic_table = ['H','He','Li','Be','B','C','N','O','F','Ne']
print(periodic_table[0])#索引出0位置
print(periodic_table[-2])#索引出-2位置元素
print(periodic_table[0:3])#索引出0、1、2位置的元素
print(periodic_table[-10:-7])#索引出-10、-9、-8位置的元素
print(periodic_table[-10:])#索引出-10到最后的元素
print(periodic_table[:9])#索引出0到8位置上的元素
print(periodic_table['H'])#報(bào)錯(cuò)可得知列表索引必須是整數(shù)或者是片,而不是字符串即用元素索引出對(duì)應(yīng)的位置

字典(鍵值對(duì))

dict={key:val1,key2:val2}
  1. 字典中的數(shù)據(jù)必須以鍵值對(duì)的形式出現(xiàn);
  2. 邏輯上,鍵不能重復(fù),但值可以;
  • 字典中的鍵是不可變的,不可修改;值是可以變,修改的,可以是任何對(duì)象;

字典可以添加NASDAQ_code[‘YOU’]=’Youku’或者.update()

NASDAQ_code = {'BIDU':'Baidu','SINA':'Sina'}
NASDAQ_code['YOKU'] = 'Youku'#字典添加一個(gè)用法
print(NASDAQ_code)
NASDAQ_code.update({'FB':'Facebook','TSLA':'Tesla'})#字典添加多個(gè)用.update()方法
print(NASDAQ_code)

刪除del()

del NASDAQ_code['FB']#字典刪除del關(guān)鍵字
print(NASDAQ_code)

索引(只能索引關(guān)鍵詞NASDAO_code[‘YOU’])

NASDAQ_code['TSLA']#字典的索引,是用列表的方法索引關(guān)鍵字

但字典不能切片

NASDAQ_code[1:4] # WRONG!字典不能進(jìn)行切片

元組(固定的列表)

tuple=(val1,val2,val3,val4)
不可以添加、刪除。可以索引

letters = ('a','b','c','d','e','f','g')#元組的形式(X,Y)
letters[0]#元組的索引和列表類(lèi)似

集合

set={val1,val2,val3,val4}
集合元素?zé)o序,不重復(fù),用來(lái)判斷從屬關(guān)系
集合可添加、刪除,集合運(yùn)算,但不可以索引

a_set = {1,2,3,4}#創(chuàng)建集合
a_set.add(5)#添加集合元素.add()
print(a_set)
a_set.discard(5)#刪除集合元素.discard()
print(a_set)

數(shù)據(jù)結(jié)構(gòu)的一些技巧

多重循環(huán)

sorted(list)方法實(shí)現(xiàn)列表元素排序

num_list = [6,2,7,4,1,3,5]
print(sorted(num_list))#sorted()分類(lèi)整理函數(shù)
sorted(num_list,reverse=True)#默認(rèn)參數(shù)reverse為false,現(xiàn)在實(shí)現(xiàn)的倒序

for a,b in zip(num,str)倆個(gè)列表

num = [6,2,7,4]
str = ['a','b','c','d']
for a,b in zip(num,str):
    print(b,'is',a)#很容易格式錯(cuò)誤expected an indented block期待在約束塊中

推導(dǎo)式

10個(gè)元素裝入列表
普通寫(xiě)法

a = []
for i in range(1,11):
    a.append(i)#用.append()方法+for循環(huán)實(shí)現(xiàn)1到10的加入列表
print(a)

列表遞推式

b = [i for i in range(1,11)]#用列表解析式實(shí)現(xiàn)1到10的加入列表
print(b)

為了深刻立即list = [item for item in iterable]舉幾個(gè)栗子吃吃就知道了

a = [i**2 for i in range(1,10)]#i**2為我們要放在列表中的元素,i的取值范圍為1到9,既可以預(yù)見(jiàn)結(jié)果為1,4,9...81 
c = [j+1 for j in range(1,10)]#2,3,4....10
k = [n for n in range(1,10) if n % 2 ==0]#n為1到9范圍內(nèi)的偶數(shù)
z = [letter.lower() for letter in 'ABCDEFGHIGKLMN']#字符串按小到大排列

字典的遞推式實(shí)現(xiàn)

d = {i:i+1 for i in range(4)}#字典中鍵從0到3的一個(gè)添加
g = {i:j for i,j in zip(range(1,6),'abcde')}#字典中鍵i從1到5,值j從a到e的組合添加
g = {i:j.upper() for i,j in zip(range(1,6),'abcde')}#.upper()方法實(shí)現(xiàn)字母小寫(xiě)變大寫(xiě)的功能

循環(huán)列表時(shí)獲取元素索引

letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
for num,letter in enumerate(letters):#用enumerate()枚舉函數(shù),將列表的元素位置枚舉出來(lái)
    print(letter,'is',num + 1)

綜合項(xiàng)目:詞頻率統(tǒng)計(jì)

import string#引入字符串模塊
path = '/Users/sharymo/Desktop/Walden.txt'
with open(path,'r') as text:
    words = [raw_word.strip(string.punctuation).lower() for raw_word in text.read().split()]#去掉前面的標(biāo)點(diǎn)符號(hào),并把首字母改寫(xiě)成小寫(xiě)
    words_index = set(words)#將列表轉(zhuǎn)換成集合,并把其中的重復(fù)去掉
    counts_dict = {index:words.count(index) for index in words_index}#創(chuàng)建一個(gè)以單詞為key,以頻數(shù)為值的字典
for word in sorted(counts_dict,key=lambda x: counts_dict[x],reverse=True):
    print('{} -- {} times'.format(word,counts_dict[word]))#打印整理好的函數(shù)

這次學(xué)的都蠻實(shí)用的
萌新求多多支持_

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容