中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

2025屆信息技術一輪復習講義:專題11 數組

資源下載
  1. 二一教育資源

2025屆信息技術一輪復習講義:專題11 數組

資源簡介

專題11 數 組
學業要求 知 識 點 學業水平等級
1.能結合數組的應用案例,了解數組概念、結構、特性,并根據要求創建數組 3
2.學會通過數組名和下標訪問數組元素,并能根據需求插入、刪除數組元素 4
知識點一 一維數組
【知識梳理】
1.數組是由相同________的變量構成的一個序列,常用的數組有一維數組和________數組。
2.數組使用數組名(標識符)和下標(索引)區分數組內的各個變量。由數組名和下標組成數組的各個變量稱為數組的分量,即數組________。
3.數組元素的類型相同,通過數組名和下標對數組中任意________的數據元素進行高效的訪問,數組的存儲空間固定不變。
4.數組的創建實質是在系統內存中劃分一塊________區域,用來保存數組包含的所有數據元素。
5.在數組中某個位置插入一個新的元素,必須先將該位置及其后的所有元素依次向________移動一個位置,以空出該位置,用于存放新元素。
6.在數組中,刪除某個位置上的數據元素,需要將該位置元素后的所有元素依次向________移一個位置。
7.數組創建時就分配好存儲空間,訪問數組元素不能________,刪除數組占用的空間不變(除非采用pop方法刪除)。
8.一維數組指只有一個________,下標用來表示數據元素在該序列中的位置。
9.在創建一個數組時,既要分配數組元素的個數,又要確定數組元素的________。如語句list1=[0]*10功能是創建一個包含10個整數類型的數組元素,初值均為0。
10.采用for循環將一個序列中值賦值給一個________,如list1=[int(i) for i in ″6,52,44,12″.split(″,″)]表示將數字串的數字按逗號分隔并轉換成數值類型,再將這些數字存儲到數組list1中。
11.統計數組list1中元素的________語句len(list1)。
12.在數組list1最后一個元素后面新增一個元素x語句________,數組空間增加一個。
13.刪除數組list1最后一個元素語句________,數組空間減少一個。
【經典案例】
數組的元素個數是固定的,存儲單元在數組定義時分配,元素順序關系由元素在數組中的位置(即下標)確定,對于不是固定長度的列表,用可能最大長度的數組來描述,會浪費許多內存空間。并且數組元素插入和刪除時,需要不斷移動數據元素。數組的優點:隨機訪問性強,查找速度快。主要缺點:插入和刪除效率低。
【例1】 現有兩個升序數組a和數組b,現在要求將兩個數組合并,依舊保持升序。a=[2,3,5,7,9,11];b=[2,4,6]
for i in range(len(b)):
a=a+[0]
i=len(a)-len(b)-1;j=len(b)-1
k=len(a)-1
while ①________:
if ②________:
a[k]=a[i]; i-=1
else:
a[k]=b[j]; j-=1
③________
print(a)
(1)請將空白處填寫完整。
(2)若①處代碼填寫為k>=0,會導致某些情況下無法得到預期的結果。下列4組數據中能測試出這一問題的是________(填字母,單選)。
A.a=[2,4,6];b=[3,7] B.a=[4];b=[3,7]
C.a=[6];b=[2,3,4] D.a=[2,5,6];b=[1]
思維點撥
精點撥 (1)程序的功能是將b中有序數據插入到a中,先在a中擴展len(b)個空間,將a和b中數據依次移動到a數組從后面開始的位置中。①若將b中全部數據移動到a中,a中原來數據是有序的,不管a中數據有沒有遍歷完,合并后的數據肯定是有序的。②為移動a前面數據的條件,當a[i]大于b[j]且a中數據沒有合并完,否則就將b的數據移動到a中。③無論移動a還是移動b中數據,k的指針始終會往前移動。(2)在比較過程中,要確保數據a[i]和b[j]是一個有效的位置上數據,因此②中不能缺少i>=0,當b中數據全部移動到a中后,j的值為-1,此時k還沒有到達0,因此再將比較時,j就不是原來的有效位置了
聽課筆記:____________________________________________________________
______________________________________________________________________
______________________________________________________________________
【變式1】 lst1和lst2都是升序排序的列表,執行如下Python程序段:
result=[]
i=0 #用于遍歷lst1
j=0 #用于遍歷lst2
while iif lst1[i]result.append(lst1[i])
i+=1
else:
result.append(lst2[j])
j+=1
while iresult.append(lst1[i])#②
i+=1
while jresult.append(lst2[j])#③
j+=1
下列說法不正確的是(  )
A.程序段①執行后,result可能與lst1相同
B.程序段①執行后,result可能與lst2相同
C.在一次程序運行中,②處代碼和③處代碼可能都被執行
D.程序執行后,列表result中的元素升序排序
【例2】 某酒店的房間編號為1到1000,對于空余的房間的記錄,采用連續空房間的起始房間編號和連續空房間數量進行記錄,例如:有空房間1、2、3、6、7、9號時,記錄的方法為:(1,3),(6,2),(9,1),共3條記錄。當有人退房時,一般出現4種情況:
·若退出房間號為4時,屬于“上靠”情況,則第1條記錄修改為(1,4);
·若退出房間號為5時,屬于“下靠”情況,則第1條記錄修改為(5,3);
·若退出房間號為8時,屬于“上下靠”情況,則第2條、第3條記錄合并,修改為(6,4);
·若退出房間號為12時,屬于“不靠”情況,則新增1條記錄為(12,1)。
請回答下列問題:
(1)當已有的空房間記錄為(3,5),(9,5),(16,3),(30,2),當退出房間號為8時,空房間記錄修改為________。
(2)實現上述功能的部分Python程序如下,請在劃線下填入合適的代碼。
″ ″ ″
讀入已有的空房間記錄,個數為n,這些記錄已按房間起始號升序排好,每條記錄的房間起始號存入數組room,對應的連續空房間的個數存入數組num,下標均為0到n-1
″ ″ ″
x=int(input(″請輸入退出房間號:″))
pos=0
while ①________:
pos+=1
if pos>0 and pos<=n-1 and room[pos-1]+num[pos-1]==x and x+1==room[pos]:
②________
for i in range(pos,n-1):
num[i]=num[i+1]
room[i]=room[i+1]
n-=1
elif pos>0 and room[pos-1]+num[pos-1]==x:
num[pos-1]+=1
elif ③________:
room[pos]=x
num[pos]+=1
else:
for i in range(n-1,pos-1,-1):
room[i+1]=room[i]
num[i+1]=num[i]
room[pos]=x
num[pos]=1
④________
for i in range(n):
print(room[i],″ ″,num[i])
思維點撥
明考向 本題考查數組元素的插入和刪除
精點撥 (1)退房前的空房間情況為3-7,9-13,8號房間退出,符合上下靠的情況,更改為3-13,16-18,30-31。(2)①找到起始空房間號room[pos]大于x房間號,為pos確保是有效索引,加上條件pos聽課筆記:_____________________________________________________________
______________________________________________________________________
______________________________________________________________________
【變式2】 以下是實現正整數序列arr升序排列的程序代碼段:
for i in range(1,len(arr)):
key=arr[i]
j=i-1
while ①________:
arr[j+1]=arr[j]
j-=1
②________
print(″排序后的數組:″)
for i in range(len(arr)):
print(″%d″ %arr[i]) #依次輸出 arr 中的每個元素
則劃線部分代碼正確的是(  )
A.①j>=0 and keyB.①j>=0 and keyC.①j>=0 and key>arr[j] ②arr[j]=key
D.①j>=0 and key>arr[j] ②arr[j+1]=key
知識點二 二維數組
【知識梳理】
1.二維數組有________個下標,表示數據元素在該序列中的行、列位置。
2.二維數組list1的一行稱為一個元素,因此可以用表達式________來表示數組中元素的個數,即數組的大小。
3.可以對數組元素進行切片,取出數組元素中每個________項,如list1[i]表示二維數組第i行數據元素,list1[i][j]表示二維數組第i行第j列數據項。
4.二維數組往往采用________循環分別對二維數組的行和列分別進行賦值。如list1=[[i*j for j in range(4)]for i in range(3)]表示創建一個3行4列的二維數組。
【經典案例】
二維數組在本質上仍然為一段連續的線性空間,和一維數組相同,根據下標進行訪問時,算法時間復雜度仍然是常數階。二維數組能很方便地存儲結構化數據,數據按行存儲,每列的數據類型往往是相同的,可以通過雙重循環來遍歷二維數組中每個數據項。二維數組可以存儲多個隊列,多個棧,也可以表示一個鏈表中多個節點。
【例題】 有如下Python程序段:
n=6
a=[[0]*n for i in range(n)]
for i in range(n):
for j in range(i+1):
if j !=0 and j !=i:
     a[i][j]=a[i-1][j-1]+a[i-1][j]
else:
     a[i][j]=1
程序執行后,a[4]的值是(  )
A.[1,3,3,1,0,0] B.[1,4,6,6,4,1]
C.[1,4,6,4,1,0] D.[1,5,10,10,5,1]
思維點撥
明考向 本題考查二維數組的創建和遍歷
精點撥 先創建一個6行6列的二維數組,遍歷二維數組的每一行,內循環從0至i,因此只對二維數組的左下半部分進行賦值。將第1列和主對角線(i和j相等)的數據全部賦值為1,其他數據為上一行的前一個和上一行的當前列之和,因此程序的功能是構建一個楊輝三角
聽課筆記:_____________________________________________________________
______________________________________________________________________
______________________________________________________________________
【變式】 有如下Python程序段:
a=[[1,3,6,9],[2,4,7,5],[5,2,3,8]]
b=[1];n=len(a)
for i in range(n):
for j in range(n+1):
if i    b.append(a[i][j]) #b追加一個元素a[i][j]
執行該程序執段后,數組b 中的元素為(  )
A.[1,3,6,9,7,5,8] B.[3,6,9,7,5,8]
C.[1,3,6,9,2,4,7,5,8] D.[1,3,6,9,4,7,5,8]
1.若長度為n的線性表采用數組a(a[0]~a[n-l])存儲,要刪除第t個位置上(存儲在a[t-1])的元素,對應的Python程序如下:
for i in range(t-1,n-1):
________________
劃線處的代碼應是(  )
A.a[t]=a[i] B.a[i]=a[i+1]
C.a[i]=a[i-1] D.a[i-1]=a[i]
2.有如下Python程序段:
a=[18,2,-1,-7,16,-2,12,8]
k1,k2=1,1
for i in range(len(a)):
if a[i]>a[k1]:
k2=k1;k1=i
elif a[i]>a[k2]:
k2=i
該程序段運行后,變量k1,k2的值分別為(  )
A.2,5 B.4,0
C.5,2 D.0,4
3.已知a數組存儲了10位學生的身高信息(范圍為150厘米~190厘米之間),現要找出所有身高超過170厘米學生中最矮的那位學生的編號及其身高數據,運行結果如圖所示。
[180,152,168,152,160,173,151,155,165,181] 下標為5號,身高為173
實現該功能的程序如下:
from random import randint
a=[randint(150,190) for i in range (10)]
if max(a)<171:
print(″所有人身高均小于 171! ″)
else:
f=True;k=0
for i in range(10):
if a[i]>170:
     if :
       k=i
       f=False
print (a)
print(″下標為″,k,″號,身高為″,a[k])
程序加框處代碼有錯,正確的語句應為(  )
A.a[i]C.a[i]4.已知6行4列的二維數組a以行優先的方式存儲在k個連續存儲單元中,每個數組元素占8個存儲單元,如果已知a[0][0]的首地址為1000,則a[3][2]的首地址為(  )
A.1112 B.1160
C.1104 D.1080
5.小剛將我國部分省會城市及其對應的市花存儲到二維數組中,并依次輸出各省會城市名及其市花,例如:杭州的市花是桂花。相關代碼如下:
a=[[″杭州市″,″桂花″],[″廣州市″,″木棉″],[″鄭州市″,″月季″],[″武漢市″,″梅花″],[″長沙市″,″杜鵑″],[″濟南市″,″荷花″]]
for p in a:
print(f″{__①__}的市花是{__②__}″)
則劃線①和②處分別應填寫的代碼為(  )
A.①p[1];②p[0] B.①p[0];②p[1]
C.①a[p][0];②a[p][1] D.①p[1];②p[2]
6.利用5列6行的二維數組qp來記錄某試場中的座位編號1~30,m=0
qp=[[0 for i in range(5)] for j in range(6)] #建立二維數組并初始賦值為0
for i in range(5):
for j in range(6):
if i %2==0:
qp[j][i]=m*6+j+1
else:
     qp[j][i]=m*6+6-j
m=m+1
運行上述程序段后,編號17所在的數組元素為(  )
A.qp[4][2] B.qp[2][4]
C.qp[5][3] D.qp[6][1]
7.小明需要根據訂單的取件距離依次安排快遞員取件。快遞員出發后不能中途折返,但可以接更遠距離的快遞訂單。當小明新接到一個取件訂單,他會依次安排可以取件的快遞員取件,若該訂單距離小于所有已出發的快遞員的最遠距離,則安排新的快遞員出發取件。編寫Python程序,實現上述功能。程序運行時,輸入訂單距離(各數值之間用“,”隔開),顯示每位快遞員的收取情況。
快遞坐標:[243,123,167,309,229,183,87,333,183] 第1分組:[243,309,333] 第2分組:[123,167,229] 第3分組:[183,183] 第4分組:[87]
(1)若新派件一個快遞,坐標為229,則應該為第________個分組去取件。
(2)實現的程序代碼如下,請將空白處填寫完整
s=input(″依次輸入快遞坐標,用逗號分隔:″)
dd=[int(i) for i in s.split(″,″)]
print(″快遞坐標:″,dd)
x=0;n=len(dd)
fp=[[0] for i in range(n)] #建立n個分組
for i in range(①________):
j=0
while ②________:
j+=1
fp[j].append(③________)
if ④________:
x+=1
for i in range(x):
print(″第″+str(i+1)+″分組:″,fp[i][1:])
8.去除一個數組中重復的元素算法思想:變量i從第1個元素開始遍歷,變量j遍歷位置i后面的所有的元素,兩個元素進行比較,如果相等,將數組最后的元素替換索引位置j的元素,數組總長度減少1個,為了防止原最后一個元素與元素i相等,位置i與第j個元素進行第2次比較(j減1)。
(1)數組a的原始值為[3,3,4,2,4,3],采用該算法去重后為[________]。
(2)實現該功能的算法如下,請將空白處填寫完整
a=[5,6,4,7,5,7,6,5,7,2]
i=0;n=len(a)-1
while i①________
while j<=n:
if a[i]==a[j]:
     a[j]=a[n]
     ②________
     j-=1
③________
i+=1
for i in range(n+1):
print(a[i],end=″″)
9.為分析數組a中各元素依次變化的情況,進行如下定義:
變化段:數組中相鄰兩個元素構成一個變化段。變化段有上升段(a[i]>a(i-1))、下降段(a[i]波峰:從上升段轉到下降段形成一個波峰。波峰的起點是峰頂前所有連續上升段中的第1個,終點是峰頂后所有連續下降段中的最后1個。
對稱波峰:上升段與下降段個數相同的波峰稱為對稱波峰。
下圖為一組數據的變化段及波峰示意圖。
現要求統計數組a各元素依次變化過程中“對稱波峰”的個數。小李依據上述描述設計如下Python程序。請回答下列問題:
(1)數組元素“1,4,3,3,2,6,8,7,9,3,4,7,9,6,3,1”依次變化過程中“對稱波峰”的個數為________。
(2)把劃線處的代碼補充完整。
def IsSymPeak(f,s):
if ①________:
return True
else:
return False
#讀取數據,并存儲到數組a中,代碼略
flag=0 #存儲變化段的狀態:1表示升,-1表示降,0表示平
steps=0 #上升段與下降段個數
count=0 #對稱波的個數
for i in range(②________):
if a[i]>a[i-1]:
if IsSymPeak(flag,steps):
     count+=1
if flag==0 or flag==-1:
     ③________
else:
     steps+=1
flag=1
elif a[i]==a[i-1]:
if IsSymPeak(flag,steps):
     count+=1
steps=0
flag=0
else:
steps -=1
flag=-1
if IsSymPeak(flag,steps):
count+=1
print(″共有對稱波個數為″,count)
專題11 數 組
知識點一
知識梳理
1.數據類型 二維 2.元素 3.位置 4.連續 5.后 6.前 7.越界 8.下標 
9.類型 10.數組 11.個數 12.list1.append(x) 13.list1.pop()
經典案例
例1 (1)①j>=0 ②i>=0 and a[i]變式1 C [本題考查兩個升序數組的歸并。用兩個指針分別遍歷兩個數組,第一個循環條件i例2 (1)(3,11),(16,3),(30,2) (2)①posroom[pos] ②num[pos-1]+=1+num[pos] ③x+1==room[pos] ④n+=1
變式2 A [從第2個元素開始遍歷arr數組,將數組元素arr[i]插入到0至i-1合適位置,形成一個升序的序列,最后整個數組是有序的。內循環中j從i-1開始與key比較,為保證arr[j]有效,j必須大于等于0,同時當key小于被比較的數時,將當前j的數據向后移動,再向前繼續查找,當條件不成立時,key的插入位置為j+1。]
知識點二
知識梳理
1.兩 2.len(list1) 3.數據 4.雙重
經典案例
例題 C
變式 A [本題考查二維數組的應用.將二維數組a中下標i當堂過關檢測
1.B [從索引t-1開始遍歷到n-1,將他后面位置(i+1)的數據賦值給當前位置,最終數組元素的個數為n-1。]
2.D [k1是最大數的下標,k2是第二大數的下標。]
3.B [找出所有身高超過170厘米學生中最矮的那位學生,f的初值為True,先找到滿足a[i]>170的第1位學生,將最值k的初值賦值為該學生的索引,同時將f的值置為False。]
4.A [本題考查二維數組的相關知識。以行優先的方式存儲,每行共4個數據項,a[3][2]前共有3行2列,因此共3*4+2=14個數據項,共占14*8=112個存儲單元,首元素地址為1000。]
5.B [p是數組a中元素,即是一個列表。]
6.A [賦值對象為qp[j][i],即i表示列,j表示行,意味著是按列遍歷矩陣,因此第1列為1-6,第2列為m*6+6-j,即12-7遞減,第3列為8-18。]
7.(1)2 (2)①len(dd)或n ②j③dd[i] ④j==x
解析 (1)第2個分組最后一個坐標等于該坐標,可以取。(2)①對dd數組n個坐標逐一進行遍歷。②查找dd[i]在哪個分組,每一個分組最后一個數字為最大值,若快遞大于等于該值,表示可以取快遞。遍歷各個坐標時,查找該坐標應插入的組別。組類別j總是從第0組開始,當第i個坐標小于該組最后一個值,再查找下一組。③將該坐標添加到fp的第j組。④x表示總共的組別,當j在[0,x-1]中找到插入位置,說明目前有小哥可以取快遞,若j超出這個范圍,則需要新開一組。
8.(1)3,4,2 (2)①j=i+1 ②n-=1 ③j+=1
解析 (1)數組[3,3,4,2,4,3]→[3,3,4,2,4]→[3,4,4,2,4]→[3,4,4,2]→[3,4,2]。(2)①變量j從i的下一個位置開始,與之進行比較。②找到一個相同,總數n減少一個。③同時為了防止原最后一個元素與元素i相等,位置i與第j個元素進行第2次比較(j減1)。
9.(1)3 (2)①f==-1 and s==0 ②1,len(a) ③steps=1
解析 本題考查枚舉算法和多支選擇結構。(1)根據題目描述,對稱波的兩個要素是在下降段且步長為0。從第2個數據點開始的steps值分別為1,0,0,-1,1,2,1,1,0,1,2,3,2,1,0。第1個對稱波是1,4,3,上升下降段各1。第2個對稱波是7,9,3。第3個對稱波是4,7,9,6,3,1。(2)②比較對象是a[i]和a[i-1],因此i的初值為1,終值為len(a)-1。③當條件a[i]>a[i-1]成立時,表示處于上升的開始點,若原來是平行波段和下降波段,則上升波段數為1。①對稱波的兩個要素是在下降段且步長為0。

展開更多......

收起↑

資源預覽

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 东山县| 康平县| 霸州市| 墨脱县| 张家界市| 徐州市| 万载县| 林甸县| 隆尧县| 新兴县| 镇江市| 侯马市| 江口县| 昆山市| 彝良县| 宁晋县| 巩留县| 扎鲁特旗| 丰顺县| 龙里县| 合阳县| 扎囊县| 彰化市| 永寿县| 仁怀市| 柘城县| 常宁市| 龙江县| 吉木萨尔县| 顺昌县| 德惠市| 陆良县| 巴彦淖尔市| 贵南县| 宣城市| 化州市| 宝兴县| 那坡县| 鲁甸县| 沈丘县| 沙洋县|