




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、簡明 Python 教程第9章 數(shù)據(jù)結(jié)構(gòu)上一頁簡介下一頁第9章 數(shù)據(jù)結(jié)構(gòu)目錄表簡介 列表 對(duì)象與類的快速入門 使用列表 元組 使用元組 元組與打印語句 字典 使用字典 序列 使用序列 參考 對(duì)象與參考 更多字符串的內(nèi)容 字符串的方法 概括 簡介數(shù)據(jù)結(jié)構(gòu)基本上就是它們是可以處理一些 數(shù)據(jù) 的 結(jié)構(gòu) 。或者說,它們是用來存儲(chǔ)一組相關(guān)數(shù)據(jù)的。在Python中有三種內(nèi)建的數(shù)據(jù)結(jié)構(gòu)列表、元組和字典。我們將會(huì)學(xué)習(xí)如何使用它們,以及它們?nèi)绾问咕幊套兊煤唵巍I弦豁撋弦患?jí)下一頁概括首頁列表簡明 Python 教程第9章 數(shù)據(jù)結(jié)構(gòu)上一頁列表下一頁列表list是處理一組有序項(xiàng)目的數(shù)據(jù)結(jié)構(gòu),即你可以在一個(gè)列表中存儲(chǔ)一
2、個(gè) 序列 的項(xiàng)目。假想你有一個(gè)購物列表,上面記載著你要買的東西,你就容易理解列表了。只不過在你的購物表上,可能每樣?xùn)|西都獨(dú)自占有一行,而在Python中,你在每個(gè)項(xiàng)目之間用逗號(hào)分割。列表中的項(xiàng)目應(yīng)該包括在方括號(hào)中,這樣Python就知道你是在指明一個(gè)列表。一旦你創(chuàng)建了一個(gè)列表,你可以添加、刪除或是搜索列表中的項(xiàng)目。由于你可以增加或刪除項(xiàng)目,我們說列表是 可變的 數(shù)據(jù)類型,即這種類型是可以被改變的。對(duì)象與類的快速入門盡管我一直推遲討論對(duì)象和類,但是現(xiàn)在對(duì)它們做一點(diǎn)解釋可以使你更好的理解列表。我們會(huì)在相應(yīng)的章節(jié)詳細(xì)探索這個(gè)主題。列表是使用對(duì)象和類的一個(gè)例子。當(dāng)你使用變量i并給它賦值的時(shí)候,比如賦整
3、數(shù)5,你可以認(rèn)為你創(chuàng)建了一個(gè)類(類型)int的對(duì)象(實(shí)例)i。事實(shí)上,你可以看一下help(int)以更好地理解這一點(diǎn)。類也有方法,即僅僅為類而定義地函數(shù)。僅僅在你有一個(gè)該類的對(duì)象的時(shí)候,你才可以使用這些功能。例如,Python為list類提供了append方法,這個(gè)方法讓你在列表尾添加一個(gè)項(xiàng)目。例如mylist.append(an item)列表mylist中增加那個(gè)字符串。注意,使用點(diǎn)號(hào)來使用對(duì)象的方法。一個(gè)類也有域,它是僅僅為類而定義的變量。僅僅在你有一個(gè)該類的對(duì)象的時(shí)候,你才可以使用這些變量/名稱。類也通過點(diǎn)號(hào)使用,例如mylist.field。使用列表例9.1 使用列表#!/usr/
4、bin/python# Filename: using_list.py# This is my shopping listshoplist = apple, mango, carrot, bananaprint I have, len(shoplist),items to purchase.print These items are:, # Notice the comma at end of the linefor item in shoplist:print item,print nI also have to buy rice.shoplist.append(rice)print My
5、shopping list is now, shoplistprint I will sort my list nowshoplist.sort()print Sorted shopping list is, shoplistprint The first item I will buy is, shoplist0olditem = shoplist0del shoplist0print I bought the, olditemprint My shopping list is now, shoplist (源文件:code/using_list.py)輸出$ python using_li
6、st.pyI have 4 items to purchase.These items are: apple mango carrot bananaI also have to buy rice.My shopping list is now apple, mango, carrot, banana, riceI will sort my list nowSorted shopping list is apple, banana, carrot, mango, riceThe first item I will buy is appleI bought the appleMy shopping
7、 list is now banana, carrot, mango, rice 它如何工作變量shoplist是某人的購物列表。在shoplist中,我們只存儲(chǔ)購買的東西的名字字符串,但是記住,你可以在列表中添加 任何種類的對(duì)象 包括數(shù)甚至其他列表。我們也使用了for.in循環(huán)在列表中各項(xiàng)目間遞歸。從現(xiàn)在開始,你一定已經(jīng)意識(shí)到列表也是一個(gè)序列。序列的特性會(huì)在后面的章節(jié)中討論。注意,我們?cè)趐rint語句的結(jié)尾使用了一個(gè) 逗號(hào) 來消除每個(gè)print語句自動(dòng)打印的換行符。這樣做有點(diǎn)難看,不過確實(shí)簡單有效。接下來,我們使用append方法在列表中添加了一個(gè)項(xiàng)目,就如前面已經(jīng)討論過的一樣。然后我們通過
8、打印列表的內(nèi)容來檢驗(yàn)這個(gè)項(xiàng)目是否確實(shí)被添加進(jìn)列表了。打印列表只需簡單地把列表傳遞給print語句,我們可以得到一個(gè)整潔的輸出。再接下來,我們使用列表的sort方法來對(duì)列表排序。需要理解的是,這個(gè)方法影響列表本身,而不是返回一個(gè)修改后的列表這與字符串工作的方法不同。這就是我們所說的列表是 可變的 而字符串是 不可變的 。最后,但我們完成了在市場購買一樣?xùn)|西的時(shí)候,我們想要把它從列表中刪除。我們使用del語句來完成這個(gè)工作。這里,我們指出我們想要?jiǎng)h除列表中的哪個(gè)項(xiàng)目,而del語句為我們從列表中刪除它。我們指明我們想要?jiǎng)h除列表中的第一個(gè)元素,因此我們使用del shoplist0(記住,Python
9、從0開始計(jì)數(shù))。如果你想要知道列表對(duì)象定義的所有方法,可以通過help(list)獲得完整的知識(shí)。上一頁上一級(jí)下一頁簡介首頁元組簡明 Python 教程第9章 數(shù)據(jù)結(jié)構(gòu)上一頁元組下一頁元組元組和列表十分類似,只不過元組和字符串一樣是 不可變的 即你不能修改元組。元組通過圓括號(hào)中用逗號(hào)分割的項(xiàng)目定義。元組通常用在使語句或用戶定義的函數(shù)能夠安全地采用一組值的時(shí)候,即被使用的元組的值不會(huì)改變。使用元組例9.2 使用元組#!/usr/bin/python# Filename: using_tuple.pyzoo = (wolf, elephant, penguin)print Number of an
10、imals in the zoo is, len(zoo)new_zoo = (monkey, dolphin, zoo)print Number of animals in the new zoo is, len(new_zoo)print All animals in new zoo are, new_zooprint Animals brought from old zoo are, new_zoo2print Last animal brought from old zoo is, new_zoo22 (源文件:code/using_tuple.py)輸出$ python using_
11、tuple.pyNumber of animals in the zoo is 3Number of animals in the new zoo is 3All animals in new zoo are (monkey, dolphin, (wolf, elephant, penguin)Animals brought from old zoo are (wolf, elephant, penguin)Last animal brought from old zoo is penguin 它如何工作變量zoo是一個(gè)元組,我們看到len函數(shù)可以用來獲取元組的長度。這也表明元組也是一個(gè)序列。
12、由于老動(dòng)物園關(guān)閉了,我們把動(dòng)物轉(zhuǎn)移到新動(dòng)物園。因此,new_zoo元組包含了一些已經(jīng)在那里的動(dòng)物和從老動(dòng)物園帶過來的動(dòng)物。回到話題,注意元組之內(nèi)的元組不會(huì)失去它的身份。我們可以通過一對(duì)方括號(hào)來指明某個(gè)項(xiàng)目的位置從而來訪問元組中的項(xiàng)目,就像我們對(duì)列表的用法一樣。這被稱作 索引 運(yùn)算符。我們使用new_zoo2來訪問new_zoo中的第三個(gè)項(xiàng)目。我們使用new_zoo22來訪問new_zoo元組的第三個(gè)項(xiàng)目的第三個(gè)項(xiàng)目。含有0個(gè)或1個(gè)項(xiàng)目的元組。一個(gè)空的元組由一對(duì)空的圓括號(hào)組成,如myempty = ()。然而,含有單個(gè)元素的元組就不那么簡單了。你必須在第一個(gè)(唯一一個(gè))項(xiàng)目后跟一個(gè)逗號(hào),這樣Py
13、thon才能區(qū)分元組和表達(dá)式中一個(gè)帶圓括號(hào)的對(duì)象。即如果你想要的是一個(gè)包含項(xiàng)目2的元組的時(shí)候,你應(yīng)該指明singleton = (2 , )。給Perl程序員的注釋列表之中的列表不會(huì)失去它的身份,即列表不會(huì)像Perl中那樣被打散。同樣元組中的元組,或列表中的元組,或元組中的列表等等都是如此。只要是Python,它們就只是使用另一個(gè)對(duì)象存儲(chǔ)的對(duì)象。 元組與打印語句元組最通常的用法是用在打印語句中,下面是一個(gè)例子:例9.3 使用元組輸出#!/usr/bin/python# Filename: print_tuple.pyage = 22name = Swaroopprint %s is %d ye
14、ars old % (name, age)print Why is %s playing with that python? % name (源文件:code/print_tuple.py)輸出$ python print_tuple.pySwaroop is 22 years oldWhy is Swaroop playing with that python? 它如何工作print語句可以使用跟著%符號(hào)的項(xiàng)目元組的字符串。這些字符串具備定制的功能。定制讓輸出滿足某種特定的格式。定制可以是%s表示字符串或%d表示整數(shù)。元組必須按照相同的順序來對(duì)應(yīng)這些定制。觀察我們使用的第一個(gè)元組,我們首先使
15、用%s,這對(duì)應(yīng)變量name,它是元組中的第一個(gè)項(xiàng)目。而第二個(gè)定制是%d,它對(duì)應(yīng)元組的第二個(gè)項(xiàng)目age。Python在這里所做的是把元組中的每個(gè)項(xiàng)目轉(zhuǎn)換成字符串并且用字符串的值替換定制的位置。因此%s被替換為變量name的值,依此類推。print的這個(gè)用法使得編寫輸出變得極其簡單,它避免了許多字符串操作。它也避免了我們一直以來使用的逗號(hào)。在大多數(shù)時(shí)候,你可以只使用%s定制,而讓Python來提你處理剩余的事情。這種方法對(duì)數(shù)同樣奏效。然而,你可能希望使用正確的定制,從而可以避免多一層的檢驗(yàn)程序是否正確。在第二個(gè)print語句中,我們使用了一個(gè)定制,后面跟著%符號(hào)后的單個(gè)項(xiàng)目沒有圓括號(hào)。這只在字符串
16、中只有一個(gè)定制的時(shí)候有效。上一頁上一級(jí)下一頁列表首頁字典簡明 Python 教程第9章 數(shù)據(jù)結(jié)構(gòu)上一頁字典下一頁字典字典類似于你通過聯(lián)系人名字查找地址和聯(lián)系人詳細(xì)情況的地址簿,即,我們把鍵(名字)和值(詳細(xì)情況)聯(lián)系在一起。注意,鍵必須是唯一的,就像如果有兩個(gè)人恰巧同名的話,你無法找到正確的信息。注意,你只能使用不可變的對(duì)象(比如字符串)來作為字典的鍵,但是你可以不可變或可變的對(duì)象作為字典的值。基本說來就是,你應(yīng)該只使用簡單的對(duì)象作為鍵。鍵值對(duì)在字典中以這樣的方式標(biāo)記:d = key1 : value1, key2 : value2 。注意它們的鍵/值對(duì)用冒號(hào)分割,而各個(gè)對(duì)用逗號(hào)分割,所有這些
17、都包括在花括號(hào)中。記住字典中的鍵/值對(duì)是沒有順序的。如果你想要一個(gè)特定的順序,那么你應(yīng)該在使用前自己對(duì)它們排序。字典是dict類的實(shí)例/對(duì)象。使用字典例9.4 使用字典#!/usr/bin/python# Filename: using_dict.py# ab is short for addressbookab = Swaroop: ,Larry: ,Matsumoto: ,Spammer: spammerprint Swaroops address is %s % abSwaro
18、op# Adding a key/value pairabGuido = # Deleting a key/value pairdel abSpammerprint nThere are %d contacts in the address-bookn % len(ab)for name, address in ab.items():print Contact %s at %s % (name, address)if Guido in ab: # OR ab.has_key(Guido)print nGuidos address is %s % abGuido (
19、源文件:code/using_dict.py)輸出$ python using_dict.pyThere are 4 contacts in the address-bookGuidos address is 它如何工作我們使用已經(jīng)介紹過的標(biāo)記創(chuàng)建了字典ab。然后我們使用在列表和元組章節(jié)中已經(jīng)討論過的索引操作符來指定鍵,從而使用鍵/值對(duì)。我們可以看到字典的語法同樣十分簡單。我們可以使用索引操作符來尋址一個(gè)鍵并為它賦值,這樣就增加了一個(gè)新的鍵/值對(duì),就像在上面的例子中我們對(duì)Guido所做的一樣。我們可以使用我們的老朋友del語句來刪除鍵/值對(duì)。我們只需要指明字典和
20、用索引操作符指明要?jiǎng)h除的鍵,然后把它們傳遞給del語句就可以了。執(zhí)行這個(gè)操作的時(shí)候,我們無需知道那個(gè)鍵所對(duì)應(yīng)的值。接下來,我們使用字典的items方法,來使用字典中的每個(gè)鍵/值對(duì)。這會(huì)返回一個(gè)元組的列表,其中每個(gè)元組都包含一對(duì)項(xiàng)目鍵與對(duì)應(yīng)的值。我們抓取這個(gè)對(duì),然后分別賦給for.in循環(huán)中的變量name和address然后在for塊中打印這些值。我們可以使用in操作符來檢驗(yàn)一個(gè)鍵/值對(duì)是否存在,或者使用dict類的has_key方法。你可以使用help(dict)來查看dict類的完整方法列表。關(guān)鍵字參數(shù)與字典。如果換一個(gè)角度看待你在函數(shù)中使用的關(guān)鍵字參數(shù)的話,你已經(jīng)使用了字典了!只需想一下你
21、在函數(shù)定義的參數(shù)列表中使用的鍵/值對(duì)。當(dāng)你在函數(shù)中使用變量的時(shí)候,它只不過是使用一個(gè)字典的鍵(這在編譯器設(shè)計(jì)的術(shù)語中被稱作 符號(hào)表 )。上一頁上一級(jí)下一頁元組首頁序列簡明 Python 教程第9章 數(shù)據(jù)結(jié)構(gòu)上一頁序列下一頁序列列表、元組和字符串都是序列,但是序列是什么,它們?yōu)槭裁慈绱颂貏e呢?序列的兩個(gè)主要特點(diǎn)是索引操作符和切片操作符。索引操作符讓我們可以從序列中抓取一個(gè)特定項(xiàng)目。切片操作符讓我們能夠獲取序列的一個(gè)切片,即一部分序列。使用序列例9.5 使用序列#!/usr/bin/python# Filename: seq.pyshoplist = apple, mango, carrot, b
22、anana# Indexing or Subscription operationprint Item 0 is, shoplist0print Item 1 is, shoplist1print Item 2 is, shoplist2print Item 3 is, shoplist3print Item -1 is, shoplist-1print Item -2 is, shoplist-2# Slicing on a listprint Item 1 to 3 is, shoplist1:3print Item 2 to end is, shoplist2:print Item 1
23、to -1 is, shoplist1:-1print Item start to end is, shoplist:# Slicing on a stringname = swaroopprint characters 1 to 3 is, name1:3print characters 2 to end is, name2:print characters 1 to -1 is, name1:-1print characters start to end is, name: (源文件:code/seq.py)輸出$ python seq.pyItem 0 is appleItem 1 is
24、 mangoItem 2 is carrotItem 3 is bananaItem -1 is bananaItem -2 is carrotItem 1 to 3 is mango, carrotItem 2 to end is carrot, bananaItem 1 to -1 is mango, carrotItem start to end is apple, mango, carrot, bananacharacters 1 to 3 is wacharacters 2 to end is aroopcharacters 1 to -1 is waroocharacters st
25、art to end is swaroop 它如何工作首先,我們來學(xué)習(xí)如何使用索引來取得序列中的單個(gè)項(xiàng)目。這也被稱作是下標(biāo)操作。每當(dāng)你用方括號(hào)中的一個(gè)數(shù)來指定一個(gè)序列的時(shí)候,Python會(huì)為你抓取序列中對(duì)應(yīng)位置的項(xiàng)目。記住,Python從0開始計(jì)數(shù)。因此,shoplist0抓取第一個(gè)項(xiàng)目,shoplist3抓取shoplist序列中的第四個(gè)元素。索引同樣可以是負(fù)數(shù),在那樣的情況下,位置是從序列尾開始計(jì)算的。因此,shoplist-1表示序列的最后一個(gè)元素而shoplist-2抓取序列的倒數(shù)第二個(gè)項(xiàng)目。切片操作符是序列名后跟一個(gè)方括號(hào),方括號(hào)中有一對(duì)可選的數(shù)字,并用冒號(hào)分割。注意這與你使用的索引
26、操作符十分相似。記住數(shù)是可選的,而冒號(hào)是必須的。切片操作符中的第一個(gè)數(shù)(冒號(hào)之前)表示切片開始的位置,第二個(gè)數(shù)(冒號(hào)之后)表示切片到哪里結(jié)束。如果不指定第一個(gè)數(shù),Python就從序列首開始。如果沒有指定第二個(gè)數(shù),則Python會(huì)停止在序列尾。注意,返回的序列從開始位置 開始 ,剛好在 結(jié)束 位置之前結(jié)束。即開始位置是包含在序列切片中的,而結(jié)束位置被排斥在切片外。這樣,shoplist1:3返回從位置1開始,包括位置2,但是停止在位置3的一個(gè)序列切片,因此返回一個(gè)含有兩個(gè)項(xiàng)目的切片。類似地,shoplist:返回整個(gè)序列的拷貝。你可以用負(fù)數(shù)做切片。負(fù)數(shù)用在從序列尾開始計(jì)算的位置。例如,shopl
27、ist:-1會(huì)返回除了最后一個(gè)項(xiàng)目外包含所有項(xiàng)目的序列切片。使用Python解釋器交互地嘗試不同切片指定組合,即在提示符下你能夠馬上看到結(jié)果。序列的神奇之處在于你可以用相同的方法訪問元組、列表和字符串。上一頁上一級(jí)下一頁字典首頁參考簡明 Python 教程第9章 數(shù)據(jù)結(jié)構(gòu)上一頁參考下一頁參考當(dāng)你創(chuàng)建一個(gè)對(duì)象并給它賦一個(gè)變量的時(shí)候,這個(gè)變量僅僅 參考 那個(gè)對(duì)象,而不是表示這個(gè)對(duì)象本身!也就是說,變量名指向你計(jì)算機(jī)中存儲(chǔ)那個(gè)對(duì)象的內(nèi)存。這被稱作名稱到對(duì)象的綁定。一般說來,你不需要擔(dān)心這個(gè),只是在參考上有些細(xì)微的效果需要你注意。這會(huì)通過下面這個(gè)例子加以說明。對(duì)象與參考例9.6 對(duì)象與參考#!/usr
28、/bin/python# Filename: reference.pyprint Simple Assignmentshoplist = apple, mango, carrot, bananamylist = shoplist # mylist is just another name pointing to the same object!del shoplist0print shoplist is, shoplistprint mylist is, mylist# notice that both shoplist and mylist both print the same list
29、without# the apple confirming that they point to the same objectprint Copy by making a full slicemylist = shoplist: # make a copy by doing a full slicedel mylist0 # remove first itemprint shoplist is, shoplistprint mylist is, mylist# notice that now the two lists are different (源文件:code/reference.py
30、)輸出$ python reference.pySimple Assignmentshoplist is mango, carrot, bananamylist is mango, carrot, bananaCopy by making a full sliceshoplist is mango, carrot, bananamylist is carrot, banana 它如何工作大多數(shù)解釋已經(jīng)在程序的注釋中了。你需要記住的只是如果你想要復(fù)制一個(gè)列表或者類似的序列或者其他復(fù)雜的對(duì)象(不是如整數(shù)那樣的簡單 對(duì)象 ),那么你必須使用切片操作符來取得拷貝。如果你只是想要使用另一個(gè)變量名,兩個(gè)名稱都 參考 同一個(gè)對(duì)象,那么如果你不小心的話,可能會(huì)引來各種麻煩。給Perl程序員的注釋記住列表的賦值語句不創(chuàng)建拷貝。你得使用切片操作符來建立序列的拷貝。 上一頁上一級(jí)下一頁序列首頁更多字符串的內(nèi)容簡明 Python 教程第9章 數(shù)據(jù)結(jié)構(gòu)上一頁更多字符串的內(nèi)容下一頁更多字符串的內(nèi)容我們已經(jīng)在前面詳細(xì)討論了字符串。我們
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 護(hù)理應(yīng)急預(yù)案
- 校本課程《葫蘆絲》教案
- 新疆精河縣七年級(jí)生物上冊(cè) 2.2.2動(dòng)物體的結(jié)構(gòu)層次教學(xué)設(shè)計(jì) (新版)新人教版
- 浙教版(2023)小學(xué)信息技術(shù)五年級(jí)上冊(cè)第9課《項(xiàng)目實(shí)踐》教學(xué)設(shè)計(jì)及反思
- 教師品德培訓(xùn)
- 滿堂腳手架搭設(shè)規(guī)范要求
- 酒店培訓(xùn)員會(huì)議
- 短期勞務(wù)派遣協(xié)議書2025
- 采購洗衣機(jī)合同范本
- 語文園地五 教學(xué)設(shè)計(jì)-2024-2025學(xué)年語文一年級(jí)下冊(cè)統(tǒng)編版
- 地下車庫交通標(biāo)志標(biāo)線及地坪漆工程施工組織設(shè)計(jì)
- 2020版中國阿爾茨海默病癡呆診療指南(全文)
- GDFJ005修改個(gè)人信息申請(qǐng)表
- JJF 1363-2019硫化氫氣體檢測(cè)儀型式評(píng)價(jià)大綱(高清版)
- 《電工與電子技術(shù)基礎(chǔ)》試題庫及答案
- 氟喹諾酮類抗菌藥物的不良反應(yīng)和臨床應(yīng)用概要
- 畢業(yè)論文(設(shè)計(jì))液壓滑臺(tái)設(shè)計(jì)
- 小學(xué)數(shù)學(xué)四年級(jí)下冊(cè)小數(shù)點(diǎn)移動(dòng)練習(xí)題(共2頁)
- 刀模管理作業(yè)指導(dǎo)書
- 宇龍數(shù)控仿真系統(tǒng)車削仿真實(shí)訓(xùn)指導(dǎo)
- 消火栓系統(tǒng)施工方案(完整版)
評(píng)論
0/150
提交評(píng)論