record 06 資料結構

2022-07-13 12:54:07 字數 4302 閱讀 6143

#__author: hasee

#date: 2018/1/11

#資料結構是用於進行程式中一組存在特定聯絡的資料的管理

#通過資料結構來管理資料,更利於這一組資料的後續操作

#四種資料結構:列表、元組、字典、字串;序列:列表、元組、字串;對序列可進行索引和切片操作;

#列表和字典可變,可以進行增刪改查;而元組和字串不可變,不能進行增刪改查

#這三種資料結構是通過不同的方式來管理資料,因此應用、場景不同

#列表、元組都是通過位置來管理資料的

#欄位是通過名稱來管理資料的

l1=[1,2,3,4,5] #可變的資料結構

t1=(1,2,3,4,5) #不可變

d1= #鍵值對

l2=[1,2,3,'a','b',1.23,true,false] #一組資料沒有資料型別限制

l3=[l1,l2,t1,d1]

t2=(1,2,3,'a','b',1.23,true,false)

t3=(l1,l2,t1,d1)

d2=t4=(1,) #定義只包含乙個元素的元組,不能省略逗號

l4=[1]

d3= #定義字典時,值可以相同,但鍵不能相同

#0,0.0,'',none,(),,{} 使用bool()函式會轉換成false

#資料結構的操作

#序列是一組有序的資料集合

#列表、元組都是有序的資料集合,因此是序列的一種

#字串也可以被認為是一種資料結構,通過一對引號管理一組資料的,並且是按照位置來管理的

#字串也是序列的一種

s='hello world'

#索引操作符 可以提取序列中的乙個元素

#切片操作符 可以提取序列中的乙個片段

#索引序號是從0開始的

print(l1[4])

print(t1[1])

print(s[0])

#索引不能超出範圍

#print(l1[5])

#索引序號可以為負數

print(l1[-1])

#切片操作符

print(l1[0:2]) #取前不取後

print(s[0:5])

print(l1[-2:-1]) #切片操作符可以使用負數序號

print(l1[-2:100]) #切片操作符可以使用超出範圍的索引序號

print(l1[-2:]) #不指定結束位置,表示擷取到最後乙個元素位置,並且包含最後乙個元素

print(l1[:2]) #不指定開始位置,表示從第乙個元素開始擷取

print(l1[:]) #同時不指定開始、結束位置時,切片操作符中的冒號不能省略

#字典通過鍵來作為索引使用

print(d1['a'])

#字典不能使用切片操作符

l1=[1,2,3,4,5,6,7,8,9,10]

t1=(1,2,3,4,5,6,7,8,9,10)

d1=s1="hello world"

#切片操作符 可以指定步長

print(l1[::2])

print(l1[::-1]) #步長為負數,表示將切片翻轉

print(l1[9:0:-1])

print(l1) #切片操作並不會改變原有的資料結構

#資料結構與for迴圈的使用

for x in l1:

print(x)

for y in t1:

print(y)

for z in s1:

print(z)

for d in d1:

print(d1[d])

#列表的元素修改

l1[0]=100

print(l1)

#列表的元素新增

print(l1)

l1.insert(2,300)

print(l1)

#列表的元素刪除

del l1[1]

print(l1)

l1.pop()

print(l1)

l1.pop(2)

print(l1)

l1.remove(4)

print(l1)

#字典的元素修改

d1['a']=100

print(d1)

#字典的元素新增

d1['d']=4

print(d1)

#字典的元素刪除

del d1['a']

print(d1)

#字串定義完成後,不能修改

#元組定義完成後,不能修改

#將列表排序

#sort()使用有限制,只能完成數值型列表的排序

#sort()排序後,將原列表修改成新的列表

l1=[4,3,2,5,6,1,1.23,2.34]

l1.sort()

print(l1)

l1.sort(reverse=true)

print(l1)

#將列表翻轉

l2=[1,2,3,4]

#reverse()翻轉,將原列表修改成新列表

l2.reverse()

print(l2)

#計算長度 len()

l1=[4,3,2,5,6,1,1.23,2.34]

t1=(4,3,2,5,6,1,1.23,2.34)

d1=s1="hello world"

print(len(l1))

print(len(t1))

print(len(d1))

print(len(s1))

#字串與列表的轉換

#通過字串的方法split()、join()來完成

s=input()

result=s.split() #split()接收的實參作為分割符

result[0]='hi'

print(result)

print(' '.join(result)) #join()通過拼接符來呼叫

#某個公司傳輸資料,資料是四位的整數,在傳遞過程中是加密的

#加密規則如下:每位數字都加上5,然後再用除以10的餘數代替該數字,再將第一位和第四位交換,第二位和第三位交換

#設計解密函式,能夠根據接收的資料判斷出原始資料

#接收使用者輸入的4位整數(加密資料)

#以字串的形式完成資料中1、2、3、4位資料的提取

#先做資料交換處理

#利用for迴圈,將字串中的每一位解密

#輸出解密後的答案

user='1234'

user=user[3]+user[2]+user[1]+user[0]

#user='4321'

result=''

for u in user:

u=int(u)

if u>=5:

u=u-5

else:

u=u+5

result=result+str(u)

#第一次迴圈 '9'

#第二次迴圈 '98'

#第三次迴圈 '987'

#第四次迴圈 '9876'

print(result)

資料結構

列表 #列表和元組都是通過位置來管理,但是列表是可變資料結構,元組和字串是不可變資料結構

元組字典 #字典是通過名稱來管理,是可變的資料結構

字串可變的資料結構即為可修改的資料結構,就可以進行相應的增刪改查

序列列表

元組字串 #字典是沒有特定序列的

for迴圈常與序列搭配使用 #range也是序列

for迴圈遍歷字典:顯示無序的顯示鍵名

print(d1[d]) #d1表示字典,d表示for迴圈跟的變數:顯示值

對序列可進行的操作:

索引切片 #列表、元組、字串就是序列,可進行這些操作

#字典不是序列,但是可通過鍵來作為索引使用,但是不可以切片,因為無順序

sort、reverse會改變原資料結構,得到新列表

但是切片不會改變原來的資料結構,只是得到新錶

字串通過列表(可對列表進行增刪改查)再得到新的字串 #字串並未改變,只是得到了新的字串而已

字串轉化為列表:

s = 'my name is zhouxingchi'

s.split() #括號如果為空,表示預設空白字元分割,也可以自己設定相應的字串裡面的字元作為字元分割

列表轉化為字串:

result = s.split()

拼接 ' '.join(result) #result為前面字串轉化的列表,join通過前面的拼接符來呼叫

資料結構 06 查詢

目錄 一 靜態查詢表 二 動態查詢表 三 雜湊表 四 各種查詢演算法的適用場景 五 二分查詢 折半查詢 查詢表分為靜態查詢表 動態查詢表和雜湊表。主要有 順序表 順序查詢 有序順序表 順序查詢 折半查詢 插值查詢 索引順序表 分塊查詢 倒排表動態查詢表主要有二叉樹和樹結構兩種型別。二叉樹 二叉排序樹...

資料結構 查詢06

查詢 或檢索 是在給定資訊集上尋找特定資訊元素的過程。待查詢的資料單位 或資料元素 稱為記錄。記錄由若干資料項 或屬性 組成,如學生記錄 其中,學號 姓名 性別 年齡 等都是記錄的資料項。若某個資料項的值能標識 或識別 乙個或一組記錄,稱其為關鍵字 key 若乙個key能唯一標識乙個記錄,稱此key...

資料結構 06佇列

只能在表的一端進行插入,另一端進行刪除,且具有先進先出原則的線性表稱為佇列。若用 s a1,a 2,a3 an s a 1,a 2,a 3,a n s a1 a2 a3 an 表示佇列,則 佇列常見的兩種操作 限定插入和刪除操作在表的兩端進行的線性表稱為雙端佇列。雙端佇列又可以分為 佇列基本操作用順...