首頁>技術>

資料結構是計算機中儲存、組織資料的方式。它包含三方面的內容,邏輯結構、儲存結構和運算。邏輯結構分為線性結構和非線性結構,線性結構如線性表、棧、佇列。非線性結構如樹和圖;儲存結構分為順序儲存和鏈式儲存。運算如檢索、排序、插入、刪除和更新。Python的內建資料結構是系統自己定義好的,不需要我們自己去定義。如列表、元組、字典,集合。列表、元組可看做是基於順序表設計的。

內建資料結構建立

建立列表,元組,字串字典和集合的方法,空列表是[],空元組是(),空字串是'',空字典是{},空集合只能透過set()函式進行建立。

# 列表list1=[]  #list1=['a','b',1,2]list2=list()#元組tup1=()  # tup1=('a','b',1,2)tup2=tuple()#字串str1='' #str='ab12'str1=str()#字典dict1={} #dict1 = {'id':1,'name':'張三'}dict2=dict()# 建立字典的構造器語法items1 = dict(one=1, two=2, three=3, four=4)# 透過zip函式將兩個序列壓成字典items2 = dict(zip(['a', 'b', 'c'], '123'))# 建立字典的推導式語法items3 = {num: num ** 2 for num in range(1, 10)}#集合a={1,2,3,4} #建立空的集合不能用{},{}是字典b=set()
取值

列表,元組,字串(可以看做字元列表)都是序列,取值可以透過索引和切片。索引是值在序列中的位置,分為正索引和負索引,正索引是從0開始,從左到右,第一個的元素的索引是0,負索引從-1開始,從右到左,最後一個元素的索引是-1。符合序列的有序序列都支援切片(slice),格式是[start:stop:step]。

start:開始索引,如果沒有指定,則預設值為0,負數表示從右邊開始算起。stop:結束索引,如果沒有指定,則取列表允許的最大值。step:步長值,如果沒有指定,則預設值為1,步長為正時,從左到右取值,步長為負時,反向取值。左閉右開,假設a=[1,2,3,4,5],a[0:3:1] 輸出:[1,2,3],取a[0]的值,不取a[3]的值。
# 列表list1=['a','b',1,2]list1[0] # 'a'索引取值list1[0:2:1]#['a','b']  切片list1[-1:] #[2]list1[::-1]#[2,1,'b','a']#元組tup1=('a','b',1,2)tup1[0] #'a'tup1[0:2:1]#('a','b')tup1[-1:]#(2,)元組只有一個元素的時候,要在元素後面加一個逗號。tup1[::-1]#(2,1,'b','a')#字串str1='ab12'str1[0] #'a'str1[0:2:1] #'ab'str1[-1:] # '2'str1[-1:] # '21ba'

字典是基於雜湊表設計的,由<鍵><值>對組成,取值透過鍵(key)。集合是一個無序集合,沒有重複元素,常用刪除重複項。

#字典dict1 = {'id':1,'name':'張三','sex':'男'}dict1['id'] # 1# 集合my_list = [1, 2, 3, 2, 3, 4]no_duplicate_list = list(set(my_list))  # [1, 2, 3, 4]
遍歷

元素的遍歷,透過for ... in 語句。

# 列表,元組字串方法一樣# 1 透過索引for index in range(len(list1)):  print(list1[index])   # a b 1 2# 2 透過元素for elem in list1:   print(elem)  # a  b 1 2# 3 透過enumerate(列舉)函式for index, elem in enumerate(list1):    print(list1[index])     print(elem)# 字典# 1 遍歷keyfor key in dict1.keys():    print(key) # id name sex#2 遍歷valuesfor value in dict1.values():    print(value)  # 1 張三 男# 3 透過items函式,返回(鍵,值)元組for key,value in dict1.items():    print(key,value)#id 1 name 張三  sex 男# 遍歷kvfor kv in dict1.items():    print(kv) #('id', 1) ('name', '張三') ('sex', '男')# 集合set1={1,2,3,4,5}for elem in set1:  print(elem) #1 2 3 4 5
常用運算插入

列表為insert,格式insert(index, obj),將某個元素插入指定的位置。append在尾部插入;元組建立後,不可修改;字典為dict[key] = value,key存在即修改,不存在即新增;集合可以透過add和update新增。

# 列表 list1.insert(2,'c') # ['a', 'b', 'c', 1, 2]

list1.append('3')

#元組 建立後,不可修改,可轉換成列表。

# 字典

dict1['num']='15767' #{'id': 1, 'name': '張三', 'num': '15767', 'sex': '男'}

# 集合

set1.add(6) # {1, 2, 3, 4, 5, 6} set1.update('6')

# 列表

list1.remove('c')

list1.pop(2)

#字典

del dict1['num']

dict1.pop('num')

#集合

set1.remove(1) # 如果元素不存在,會報錯

set1.discard(1) #如果元素不存在,會報錯

排序

列表sort(),sorted,sorted返回排序後的序列。元組和字串可以轉換為列表排序。字典預設對key值進行排序,透過key引數,可以指定按照value值對key進行排序。集合會自動排序,

#列表 #sort() 函式list=[2,3,1,5,4]list.sort()  #[1,2,3,4,5]list.sort(reverse=True) #[5,4,3,2,1]  reverse=True 降序#key引數用來指定對那個元素進行排序。list1 =[('b',6),('a',1),('c',3),('d',4)]list.sort(key=lambda x:x[1])#[('a', 1), ('c', 3), ('d', 4), ('b', 6)]#sorted()函式sorted(list1,key=lambda x:x[1],reverse=True)#[('b', 6), ('d', 4), ('c', 3), ('a', 1)]#字典d = {'a': 2, 'A': 1, 'c': 3, 'b': 2}sorted_key_list = sorted(d)   #預設透過key對字典進行排序#輸出:['A', 'a', 'b', 'c']#sorted_key_list = sorted(d,reverse=True)   sorted_key_list = sorted(d, key=lambda x:d[x])  #透過key引數,指定按照value進行排序。#輸出:['A', 'a', 'b', 'c']# sorted_key_list = sorted(d, key=lambda x:d[x], reverse=True)      #集合set={1,5,2,4,3}print(set) #{1,2,3,4,5}
推導式

推導式comprehensions(又稱解析式),是Python的一種獨有特性。推導式是可以從一個數據序列構建另一個新的資料序列的結構體。分為列表、字典和集合三種。

列表推導式

格式:變數名=[表示式 for 變數 in 列表]

# 不使用列表推導式,給list1賦值過程

list1 = []

for i in range(10):

list1.append(i)

print(list1) #結果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

#以下為列表推導式的使用,第一個和上面結果一樣

list2 = [i for i in list1]

print(list2)#結果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

字典推導式

格式:變數名={ key: value for 變數 in 字典 }

dict1 = {'id':1,'name':'張三','sex':'男'}

dict2 = {k : v for k, v in dict1.items()}

print(dict2) #結果:{'id': 1, 'name': '張三'}

集合推導式

格式:變數名={表示式 for 變數 in 集合}

set1 = {i * 2 for i in range(10) }

print(set1)#結果:{0, 2, 4, 6}

12
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 學習-springmvc基本資料型別和物件型別作為引數