




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
個人簡介/zhangxiao.html西北工業(yè)大學(xué)計算機(jī)學(xué)院副教授,工學(xué)博士,計算機(jī)學(xué)會信息存儲技術(shù)專業(yè)委員會委員,海量存儲標(biāo)準(zhǔn)委員會委員。近年來一直從事存儲系統(tǒng)、計算機(jī)網(wǎng)絡(luò)及分布式文件系統(tǒng)等方面的研究,共發(fā)表論文五十余篇,其中索引21篇,獲得軟件著作權(quán)12項,申請專利7項,已授權(quán)5項,參與3項國家存儲相關(guān)標(biāo)準(zhǔn)的制定工作。承擔(dān)課題:國際合作項目:NEC磁盤陣列管理軟件,異構(gòu)系統(tǒng)共享文件系統(tǒng),備份容災(zāi)系統(tǒng)等863重大項目課題
“存儲系統(tǒng)測試評價技術(shù)和平臺”863重大項目子課題“云計算關(guān)鍵技術(shù)與系統(tǒng)(二期)--云計算測試與評估系統(tǒng)研制”國家科技支撐計劃“低能耗存儲設(shè)備研制及產(chǎn)業(yè)化”自然基金面上項目“基于全數(shù)據(jù)的云存儲系統(tǒng)實(shí)時性能建模理論及方法研究”華為合作項目3項研究領(lǐng)域:
云計算和云存儲,
大數(shù)據(jù)處理,
系統(tǒng)評測與優(yōu)化大數(shù)據(jù)基礎(chǔ)Python基礎(chǔ)數(shù)據(jù)獲取—爬蟲數(shù)據(jù)存儲—Python讀寫文件及數(shù)據(jù)庫數(shù)據(jù)預(yù)處理—Python處理異常數(shù)據(jù)數(shù)據(jù)挖掘—使用scikit-learn進(jìn)行數(shù)據(jù)挖掘數(shù)據(jù)可視化—使用matplotlib進(jìn)行數(shù)據(jù)可視化Python大數(shù)據(jù)基礎(chǔ)2課時2課時2課時2課時海量數(shù)據(jù)的產(chǎn)生社交網(wǎng)絡(luò)分析系統(tǒng)物聯(lián)網(wǎng)數(shù)據(jù)處理系統(tǒng)Google搜索Google搜索,每天查詢處理24PB數(shù)據(jù)Facebook每小時創(chuàng)造130萬消息沃爾瑪每小時處理100多萬筆交易,數(shù)據(jù)庫大小超過2500萬億Byte(2PB)全國5億手機(jī)用戶,每日產(chǎn)生30TB話單數(shù)據(jù)每分鐘發(fā)送郵件數(shù)量達(dá)到2.9萬封淘寶、京東等購物網(wǎng)站每小時處理百萬筆交易IDC統(tǒng)計,數(shù)據(jù)會以每年60%的速度增長海量且快速增長的數(shù)據(jù)對數(shù)據(jù)存儲和數(shù)據(jù)管理系統(tǒng)提出了更高的要求數(shù)據(jù)的摩爾定律3,0001,000100100197019801990200020102020Systems-
centricPC-
centricNetwork-
centricInformation-
centric用戶數(shù)量(百萬)20052010人類每18個月產(chǎn)生的數(shù)據(jù)量,是人類之前全部數(shù)據(jù)量的總和硬盤的Kryder’sLAW:密度每年翻一番(2005年)大數(shù)據(jù)處理流程數(shù)據(jù)是大數(shù)據(jù)處理的基礎(chǔ)。數(shù)據(jù)來源包括公開數(shù)據(jù)庫,傳感器,Web和其他業(yè)務(wù)數(shù)據(jù)。在數(shù)據(jù)收集過程中,數(shù)據(jù)源的數(shù)據(jù)質(zhì)量和采集頻度會影響大數(shù)據(jù)到質(zhì)量,包括數(shù)據(jù)真實(shí)性、完整性、一致性和準(zhǔn)確性。傳感器數(shù)據(jù):結(jié)合傳感器提供的API,定期讀取其內(nèi)容并存入指定數(shù)據(jù)庫或文件中。用戶行為日志:通過正則表達(dá)式分析(re模塊)區(qū)分日志的特征并抓取有價值日志進(jìn)行保存Web數(shù)據(jù):爬蟲方式采集。使用urllib等庫獲取頁面內(nèi)容,通過Beautifulsoap庫可以解析HTML頁面的內(nèi)容并獲得指定的數(shù)據(jù)。數(shù)據(jù)采集在
很多大數(shù)據(jù)處理的應(yīng)用中,數(shù)據(jù)都是在文件或數(shù)據(jù)庫中保存的。大數(shù)據(jù)處理的中間結(jié)果也需要保存在持久化的存儲中。對數(shù)據(jù)的讀寫操作是計算機(jī)處理的基礎(chǔ)。文本文件讀寫二進(jìn)制文件(帶格式)讀寫數(shù)據(jù)庫增刪改查對象持久化數(shù)據(jù)存儲大數(shù)據(jù)采集過程中通常有一個或多個數(shù)據(jù)源,這些數(shù)據(jù)源包括同構(gòu)或異構(gòu)的數(shù)據(jù)庫、文件系統(tǒng)、服務(wù)接口等,易受到噪聲數(shù)據(jù)、數(shù)據(jù)值缺失、數(shù)據(jù)沖突等影響,因此需對收集到的大數(shù)據(jù)集合進(jìn)行預(yù)處理,以保證大數(shù)據(jù)分析與預(yù)測結(jié)果的準(zhǔn)確性。包括數(shù)據(jù)清理、數(shù)據(jù)集成、數(shù)據(jù)歸約與數(shù)據(jù)轉(zhuǎn)換等數(shù)據(jù)清理技術(shù)包括對數(shù)據(jù)的不一致檢測、噪聲數(shù)據(jù)的識別、數(shù)據(jù)過濾與修正等方面,有利于提高大數(shù)據(jù)的一致性、準(zhǔn)確性、真實(shí)性和可用性等方面的質(zhì)量;數(shù)據(jù)集成則是將多個數(shù)據(jù)源的數(shù)據(jù)進(jìn)行集成,從而形成集中、統(tǒng)一的數(shù)據(jù)庫、數(shù)據(jù)立方體等,這一過程有利于提高大數(shù)據(jù)的完整性、一致性、安全性和可用性等方面質(zhì)量;數(shù)據(jù)歸約是在不損害分析結(jié)果準(zhǔn)確性的前提下降低數(shù)據(jù)集規(guī)模,使之簡化,包括維歸約、數(shù)據(jù)歸約、數(shù)據(jù)抽樣等技術(shù),這一過程有利于提高大數(shù)據(jù)的價值密度,即提高大數(shù)據(jù)存儲的價值。數(shù)據(jù)轉(zhuǎn)換處理包括基于規(guī)則或元數(shù)據(jù)的轉(zhuǎn)換、基于模型與學(xué)習(xí)的轉(zhuǎn)換等技術(shù),可通過轉(zhuǎn)換實(shí)現(xiàn)數(shù)據(jù)統(tǒng)一,這一過程有利于提高大數(shù)據(jù)的一致性和可用性。數(shù)據(jù)預(yù)處理大數(shù)據(jù)的分布式處理技術(shù)與存儲形式、業(yè)務(wù)數(shù)據(jù)類型等相關(guān),針對大數(shù)據(jù)處理的主要計算模型有MapReduce分布式計算框架、分布式內(nèi)存計算系統(tǒng)、分布式流計算系統(tǒng)等。大數(shù)據(jù)分析技術(shù)主要包括已有數(shù)據(jù)的分布式統(tǒng)計分析技術(shù)和未知數(shù)據(jù)的分布式挖掘、深度學(xué)習(xí)技術(shù)。聚類與分類、關(guān)聯(lián)分析、深度學(xué)習(xí)等,可挖掘大數(shù)據(jù)集合中的數(shù)據(jù)關(guān)聯(lián)性,形成對事物的描述模式或?qū)傩砸?guī)則,可通過構(gòu)建機(jī)器學(xué)習(xí)模型和海量訓(xùn)練數(shù)據(jù)提升數(shù)據(jù)分析與預(yù)測的準(zhǔn)確性。數(shù)據(jù)處理與分析數(shù)據(jù)可視化是指將大數(shù)據(jù)分析與預(yù)測結(jié)果以計算機(jī)圖形或圖像的直觀方式顯示給用戶的過程,并可與用戶進(jìn)行交互式處理。數(shù)據(jù)可視化技術(shù)有利于發(fā)現(xiàn)大量業(yè)務(wù)數(shù)據(jù)中隱含的規(guī)律性信息,以支持管理決策。數(shù)據(jù)可視化環(huán)節(jié)可大大提高大數(shù)據(jù)分析結(jié)果的直觀性,便于用戶理解與使用,數(shù)據(jù)可視化是大數(shù)據(jù)可用性和易于理解性質(zhì)量的關(guān)鍵因素。數(shù)據(jù)可視化Python大數(shù)據(jù)相關(guān)知識點(diǎn)讀寫csv文件讀寫Excel文件操作Sqlite3數(shù)據(jù)庫存取數(shù)據(jù)簡單的網(wǎng)頁爬蟲開發(fā)理解網(wǎng)站訪問流程,請求格式等獲取數(shù)據(jù)檢查異常數(shù)據(jù),數(shù)據(jù)集成,數(shù)據(jù)歸一化數(shù)據(jù)預(yù)處理統(tǒng)計分析,數(shù)據(jù)挖掘機(jī)器學(xué)習(xí)等數(shù)據(jù)處理Python語言基礎(chǔ)各種圖表的選擇數(shù)據(jù)到信息的轉(zhuǎn)換繪制和優(yōu)化圖表數(shù)據(jù)可視化Python(中文發(fā)音為派森,原意為蟒蛇,因此其圖標(biāo)為兩只蟒蛇)是一門高級程序開發(fā)語言。所謂“高級程序開發(fā)語言”,是相對于“低級程序開發(fā)語言”來說的。Python的語法接近正常的英語語法,因此即使不會編程,只要懂得基本的英語(詞匯量不到100),也可以大致看懂Python代碼。第2章Python基礎(chǔ)通過這一章的學(xué)習(xí),你將會掌握如下知識。(1)Python開發(fā)環(huán)境的搭建。(2)Python的基本知識、數(shù)據(jù)類型。(3)Python的條件語句和循環(huán)語句。(4)Python函數(shù)的定義和使用。(5)基于Python的面向?qū)ο缶幊檀a。
學(xué)習(xí)目標(biāo)由于歷史原因,Python有兩個主要的大版本:Python2與Python3。這兩個大版本同時在往各自的方向發(fā)展。絕大多數(shù)的Python代碼在這兩個大版本中可以通用,但也有少數(shù)代碼只能在Python2中運(yùn)行,或者只能在Python3中運(yùn)行。Python官方曾經(jīng)宣布,在今后的發(fā)展中,Python3的升級會增加新功能,而Python2的升級只會做錯誤修正,不會增加新的功能。Python之父吉多·范羅蘇姆(GuidovanRossum)建議使用Python3,并逐步淘汰Python2。Python官方推特宣布,在2020年停止維護(hù)Python2。本書所有代碼基于Python3開發(fā)。截至2019年6月,Python2正式版的最新版本為Python2.7.16,Python3正式版的最新版本為Python3.7.3。2.1Python的安裝和運(yùn)行Python的官方網(wǎng)站界面如圖2-1所示。2.1.1在Windows中安裝Python圖2-1Python官方網(wǎng)站界面可以下載各個大版本最新版以及Windows對應(yīng)的安裝包使用Windows操作系統(tǒng)的讀者,可訪問/ftp/python/3.6.1/python-3.6.1-amd64.exe下載Python3.6.1或者更高版本的安裝程序。
由于Python官方網(wǎng)站會受到某些干擾,所以在我國部分地區(qū)長期無法訪問,在另一些地區(qū)間歇性無法訪問。如果以上網(wǎng)址無法訪問,各位讀者可稍后再嘗試。下載的文件名為python-3.6.1-amd64.exe。下載完成以后,雙擊這個安裝程序,安裝界面如圖2-2所示。Windows上Python安裝圖2-2Python安裝界面一定要勾選“AddPython3.6toPATH”復(fù)選框,這一點(diǎn)非常重要。然后選擇“InstallNow”選項,即可開始安裝Python3.6.1。安裝完成以后,按“Win+R”組合鍵(“Win鍵”是鍵盤上像漢字“田”的那個鍵),在彈出的“運(yùn)行”對話框中輸入“cmd”(不包括最外層雙引號,下同),如圖2-3所示。單擊“確定”按鈕,打開Windows命令提示符(CommandPrompt,CMD)窗口,如圖2-4所示。
運(yùn)行第一個Python程序圖2-3在“運(yùn)行”對話框輸入“cmd”
圖2-4Windows命令提示符窗口輸入“python”并按下鍵盤上的回車鍵,如果CMD窗口顯示信息如圖2-5所示,表明Python安裝成功,并進(jìn)入了Python交互環(huán)境。在圖2-5中,出現(xiàn)了3個向右的箭頭“>>>”,這是提示用戶輸入內(nèi)容。在本章以及后面章節(jié)中的代碼中如果有這樣的3個箭頭,表示代碼就是在圖2-5所示的窗口中直接輸入的。例如:代碼表示把“1+1”通過鍵盤輸入到這個Python交互環(huán)境中,然后按下回車鍵,下面不帶3個箭頭的數(shù)字“2”表示Python交互環(huán)境輸出的內(nèi)容。運(yùn)行Python程序圖2-5啟動Python交互模式成功>>>1+12>>>print(“HelloPython!”)HelloPython!PyCharmEclipse+pydevJupyter(IPythonnotebook)2.2Python集成開發(fā)環(huán)境本書使用的集成開發(fā)環(huán)境為JetBrains公司的PyCharm。
PyCharm在Windows、MacOS和Linux中均有安裝文件。網(wǎng)站提供了社區(qū)版(CommunityEdition)和專業(yè)版(ProfessionalEdition),其中,社區(qū)版對個人用戶是免費(fèi)的,而且提供的功能可以滿足本書的所有開發(fā)需求。在網(wǎng)站上根據(jù)自己的操作系統(tǒng)選擇合適的版本,如圖2-6所示。2.2.1PyCharm介紹與安裝圖2-6根據(jù)系統(tǒng)選擇PyCharm版本PyCharm的安裝非常簡單,本書以安裝Windows版本為例來進(jìn)行說明。首先從網(wǎng)站上下載PyCharm的安裝文件,然后雙擊安裝,在出現(xiàn)圖2-7所示界面時,勾選“64-bitlauncher”復(fù)選框。除此之外,其余界面全部單擊“Next”按鈕,最后單擊“Install”按鈕進(jìn)行安裝。安裝完成,第一次運(yùn)行,可以看到圖2-8所示的對話框。該對話框詢問是否導(dǎo)入已有設(shè)置。PyCharm安裝(1/2)圖2-7勾選“64-bitlauncher”復(fù)選框
圖2-8第一次運(yùn)行PyCharm會詢問是否導(dǎo)入已有設(shè)置由于是第一次安裝,因此直接單擊“OK”按鈕,出現(xiàn)用戶協(xié)議,如圖2-9所示。閱讀完協(xié)議以后,單擊“Accept”按鈕,PyCharm將會正式運(yùn)行,并彈出主題選擇對話框,如圖2-10所示。保持默認(rèn),直接單擊“OK”按鈕,開始創(chuàng)建工程。PyCharm安裝(2/2)
圖2-9PyCharm用戶協(xié)議
圖2-10選擇PyCharm主題2.2.2運(yùn)行代碼圖2-11填寫工程路徑PyCharm是以工程為單位來管理代碼的,所以第一次運(yùn)行PyCharm的時候,它會問是創(chuàng)建一個工程還是打開一個工程。單擊“CreateNewProject”按鈕,填寫工程的路徑,如圖2-11所示。將這個路徑修改為一個熟悉的路徑,如“C:\MyProject\chapter2”。PyCharm會自動尋找Python的安裝位置,因此第二個下拉選項不需要修改,直接單擊“Create”按鈕,工程就創(chuàng)建好了。工程創(chuàng)建好以后,進(jìn)入圖2-12所示的界面。在左側(cè)窗格中右擊工程的文件夾名字,選擇“New”命令,在彈出的二級菜單中選擇“PythonFile”命令,如圖2-13所示。創(chuàng)建工程圖2-12工程初始化界面圖2-13選擇“New”-“PythonFile”命令在彈出的對話框中輸入文件名,并單擊“OK”按鈕,Python文件(由于Python文件的擴(kuò)展名為“.py”,因此以下簡稱“.py文件”)就創(chuàng)建好了,如圖2-14所示。創(chuàng)建文件圖2-14輸入.py文件名并單擊“OK”按鈕創(chuàng)建完成.py文件以后,就可以在PyCharm中編輯Python代碼。Python代碼編寫完成以后,需要使用PyCharm來運(yùn)行代碼。單擊PyCharm右上角的灰色小箭頭圖標(biāo),選擇“EditConfigurations”選項,如圖2-15所示。在新打開的界面中單擊左上角的“+”號,選擇Python選項,如圖2-16所示。編輯Python文件
圖2-15選擇“EditConfigurations”選項
圖2-16選擇“Python”選項在彈出的對話框中,通過單擊箭頭所指的按鈕來選擇剛才創(chuàng)建的.py文件,并在“Name”文本框中輸入一個名字,這個名字可以任意填寫,中文及英文都可以,如圖2-17所示。只需要修改這兩個地方即可,修改以后單擊“OK”按鈕。修改文件內(nèi)容圖2-17選擇剛才創(chuàng)建的.py文件并輸入名字對話框關(guān)閉以后,回到PyCharm的窗口,右上角出現(xiàn)了一個三角形按鈕和一個甲蟲按鈕,如圖2-18所示。單擊三角形按鈕可運(yùn)行代碼,單擊甲蟲按鈕可調(diào)試代碼?,F(xiàn)在單擊三角形按鈕,程序就運(yùn)行起來了,如圖2-19所示。運(yùn)行程序
圖2-18三角形按鈕和甲蟲按鈕
圖2-19單擊三角形按鈕運(yùn)行程序整數(shù)、浮點(diǎn)數(shù)和變量2.3Python的數(shù)據(jù)結(jié)構(gòu)和控制結(jié)構(gòu)1.整數(shù)與浮點(diǎn)數(shù)
Python里面的整數(shù)和數(shù)學(xué)里面的整數(shù)定義是一樣的,Python里面的浮點(diǎn)數(shù)可以看作是數(shù)學(xué)里面的小數(shù)。在Python中使用print函數(shù)打印一個整數(shù)或者浮點(diǎn)數(shù),可以看到這個整數(shù)或者浮點(diǎn)數(shù)被原樣打印了出來:>>>print(1234)1234>>>print(3.14159)3.141592.3.1整數(shù)、浮點(diǎn)數(shù)和變量整數(shù)的加、減、乘可以直接在print中進(jìn)行,也可以通過括號來改變運(yùn)算的優(yōu)先級:>>>print(1-10)-9>>>print(3+2-5*0)5>>>print((3+2-5)*0)0在PyCharm中的運(yùn)行效果如圖2-20所示。整數(shù)的運(yùn)算圖2-20使用Python進(jìn)行加、減、乘運(yùn)算上面的例子說到了整數(shù)的加、減、乘,那整數(shù)的除法呢?浮點(diǎn)數(shù)的加、減、乘、除呢?如果在Python中打印“0.1+0.2”的結(jié)果,會得到什么呢?例如下列代碼:>>>print(0.1+0.2)0.30000000000000004浮點(diǎn)數(shù)的運(yùn)算結(jié)果并不是0.3,而是一個很長的浮點(diǎn)數(shù)。這不是Python的問題,Java、C語言、C++等各種語言都有這個問題。這是由于計算機(jī)里面浮點(diǎn)數(shù)的儲存機(jī)制導(dǎo)致的。有興趣的讀者可以了解一下浮點(diǎn)數(shù)從十進(jìn)制轉(zhuǎn)化為二進(jìn)制的原理和結(jié)果。由于這個原因,不應(yīng)該直接使用Python來進(jìn)行精確的計算,但是進(jìn)行日常的精度不高的四則運(yùn)算是沒有問題的,如圖2-21所示。浮點(diǎn)數(shù)的運(yùn)算
圖2-21使用Python進(jìn)行整數(shù)的除法和浮點(diǎn)數(shù)的在圖2-21中,第7行使用#號開頭的內(nèi)容表示注釋,Python在運(yùn)行的時候會自動忽略#號后面的內(nèi)容。所謂變量,可以理解為一個存放其他數(shù)據(jù)的盒子。使用變量可以減少重復(fù)輸入。例如在Python中計算一個長方體的底面積和體積,代碼如圖2-22所示。在圖2-22的代碼中,變量在等號的左邊,變量里面將要存放的值在等號的右邊。等號是賦值的意思。將等號右邊的值賦給左邊的變量,這樣變量里面的值就等于右邊了。而如果等號的右邊也是一個變量,那么就把等號右邊的變量里面的值賦給等號左邊的變量。2.變量圖2-22在Python中計算長方體的底面積和體積Python2不支持中文變量名,Python3支持Unicode的變量名,但是建議使用英文字母組成的變量名。1.以下劃線_或字母開頭,包含下劃線,字母,數(shù)字。2.不能和關(guān)鍵字重名1.字符串(String)在Python中,除了整數(shù)和浮點(diǎn)數(shù)外,還有字符串。任何被單引號或者雙引號括起來的內(nèi)容都可以認(rèn)為是字符串。字符串也可以賦值給變量。2.3.2字符串、列表、元組從上面的8行代碼中可以看到,字符串的內(nèi)容可以是中文,可以是英文,可以是數(shù)字,可以是空格,可以是中文、英文、數(shù)字和空格的組合。需要注意的是,字符串形式的數(shù)字和普通的數(shù)字是不一樣的,它們不相等。例如如下代碼:string_6='123'int_variable=123字符串例子string_1='我是一個字符串'#字符串可以是中文或者任何其他語言string_2='Iamastring'string_3=''#空字符串string_4=''#空格string_5='a'#字符串可以只有一個字母string_6='123'#字符串型的數(shù)字string_7='我是字符串Iamastring12345'string_8="我是用雙引號括起來的字符串,我和單引號括起來的字符串沒有區(qū)別"列表是Python里面的容器之一,由方括號和方括號括起來的數(shù)據(jù)構(gòu)成。里面的數(shù)據(jù)可以是整數(shù)、浮點(diǎn)數(shù)、字符串,也可以是另一個列表或者其他的數(shù)據(jù)結(jié)構(gòu)。列表里面的每一項叫作列表的一個元素,每個元素之間使用英文逗號隔開:list_1=[1,2,3,4,5]#列表里面有5個元素,全部是數(shù)字list_2=['abc','x','','kkk']#列表里面有4個元素,全部是字符串list_3=[]#空列表list_4=[123,'xyz',3.14,[1,2,'yy']]#由多種元素組合起來的列表2.列表(List)元組是Python里面的容器之一,由小括號和小括號括起來的數(shù)據(jù)構(gòu)成。它的外型和列表非常像,只不過列表使用的是方括號,元組使用的是小括號?!霸M”中的“元”和“二元一次方程”中的“元”是同一個意思,“組”就是組合的意思。tuple_1=(1,2,3,4,5)#元組里面有5個元素,全部為數(shù)字tuple_2=('abc','x','','kkk')#元組里面有4個元素,全部是字符串tuple_3=()#空元組tuple_4=(123,'xyz',[1,'t','z'],('o','pp'))#由多種元素組合起來的元組3.元組(Tuple)列表:L=[1,2,5,7]元組:T=(1,2,5,7)列表生成以后還可以往里面繼續(xù)添加數(shù)據(jù),也可以從里面刪除數(shù)據(jù);但是元組一旦生成就不能修改。如果它里面只有整數(shù)、浮點(diǎn)數(shù)、字符串、另一個元組,就既不能添加數(shù)據(jù),也不能刪除數(shù)據(jù),還不能修改里面數(shù)據(jù)的值。但是如果元組里面包含了一個列表,那么這個元組里面的列表依舊可以變化。TT=([a,b,c],12,“Hello”)元組和列表的區(qū)別之所以要把字符串、列表和元組放在一起介紹,是因?yàn)榭梢允褂猛耆粯拥姆绞綇倪@3個數(shù)據(jù)結(jié)構(gòu)中讀取數(shù)據(jù),如圖2-23所示。2.3.3數(shù)據(jù)的讀取圖2-23字符串、列表和元組的讀取方法完全相同在大多數(shù)編程語言里面,下標(biāo)都是從0開始的,Python也不例外。第0個元素就是指最左邊的元素。example_string='我是字符串'在字符串中,第0個字符是“我”字,第1個字符是“是”字,以此類推。example_list=['我','是','列','表']在列表中,第0個元素是“我”字,第1個元素是“是”字,以此類推。example_tuple=('我','是','元','組')
在元組中,第0個元素是“我”字,第1個元素是“是”字,以此類推。三種數(shù)據(jù)結(jié)構(gòu)中,取任何一個元素,都可以直接使用變量名[下標(biāo)]1.指定下標(biāo)讀取指定位置的元素例如:>>>print(example_string[0])我>>>print(example_list[1])是>>>print(example_tuple[2])元-1表示最后一個元素,-2表示倒數(shù)第2個元素,-3表示倒數(shù)第3個元素,以此類推,所以:>>>print(example_string[-1])串>>>print(example_list[-2])列>>>print(example_tuple[-3])是特定的下標(biāo)切片操作是截取原來數(shù)據(jù)結(jié)構(gòu)的一部分,比如獲取前10個元素,第三個字符開始的5個元素,最后5個元素等。字符串切片以后的結(jié)果還是字符串,列表切片以后的結(jié)果還是列表,元組切片以后的結(jié)果還是元組。切片的格式為:變量名[開始位置下標(biāo):結(jié)束位置下標(biāo):步長]其中“開始位置下標(biāo)”“結(jié)束位置下標(biāo)”“步長”可以部分省略,但是不能全部省略。這3個參數(shù)對應(yīng)的都是數(shù)字。切片的結(jié)果包括“開始位置下標(biāo)”所對應(yīng)的元素,但是不包括“結(jié)束位置下標(biāo)”所對應(yīng)的元素。2.切片操作省略“開始位置下標(biāo)”,表示從下標(biāo)為0的元素開始計算。省略“結(jié)束位置下標(biāo)”,表示直到最后一個元素且包含最后一個元素。例如:省略“開始位置下標(biāo)”和“結(jié)束位置下標(biāo)”,“步長”取-1,表示倒序輸出,例如:例子>>>print(example_string[1:3])#讀取下標(biāo)為1和下標(biāo)為2的兩個字符是字>>>print(example_list[:3])#讀取下標(biāo)為0、1、2的3個元素我是列>>>print(example_tuple[2:])#讀取下標(biāo)為2的元素和它后面的所有元素元組>>>print(example_string[::-1])串符字是我字符串與字符串之間可以相加,相加表示兩個字符串拼接起來。例如:>>>string_1='你好'>>>string_2='世界'>>>string_3=string_1+string_2>>>print(string_3)你好世界3.拼接與修改元組與元組之間也可以相加,相加表示兩個元組拼接起來。例如:>>>tuple_1=('abc','xyz')>>>tuple_2=('哈哈哈哈','嘿嘿嘿嘿']>>>tuple_3=tuple_1+tuple_2>>>print(tuple_3)('abc','xyz','哈哈哈哈','嘿嘿嘿嘿')元組的拼接列表與列表之間也可以相加,相加表示兩個列表拼接起來。例如:>>>list_1=['abc','xyz']>>>list_2=['哈哈哈哈','嘿嘿嘿嘿']>>>list_3=list_1+list_2>>>print(list_3)['abc','xyz','哈哈哈哈','嘿嘿嘿嘿']列表的拼接特別的,可以通過列表的下標(biāo)來修改列表里面的值,格式為:變量名[下標(biāo)]=新的值例如:>>>existed_list=[1,2,3]>>>existed_list[1]='新的值'>>>print(existed_list)[1,'新的值',3]修改列表中的元素列表還可以單獨(dú)在末尾添加元素,例如:>>>list_4=['Python','爬蟲']>>>print(list_4)['Python','爬蟲']>>>list_4.append('一')>>>print(list_4)['Python','爬蟲','一']>>>list_4.append('酷')>>>print(list_4)['Python','爬蟲','一','酷']增加元素元組和字符串不能添加新的內(nèi)容,不能修改元組里面的非可變?nèi)萜髟?,也不能修改字符串里面的某一個字符。字符串、列表和元組還有一些其他特性,它們之間的互相轉(zhuǎn)化將在爬蟲開發(fā)的過程中逐漸介紹。元組和字符串內(nèi)容不可變1.字典字典就是使用大括號括起來的鍵(Key)值(Value)對(Key-Value對)。每個鍵值對之間使用英文逗號分隔,每個Key與Value之間使用英文冒號分隔。例如:dict_1={'superman':'超人是一個可以在天上飛的兩足獸','天才':'天才跑在時代的前面,把時代拖得氣喘吁吁。','xx':0,42:'42是一切的答案'}2.3.4字典與集合Key可以使用中文、英文或者數(shù)字,但是不能重復(fù)。Value可以是任意字符串、數(shù)字、列表、元組或者另一個字典,Value可以重復(fù)??梢酝ㄟ^Key來從字典中讀取對應(yīng)的Value,有3種主要的格式:變量名[key]變量名.get(key)變量名.get(key,'在找不到key的情況下使用這個值')字典的定義和使用集合是使用大括號括起來的各種數(shù)據(jù),可以看作沒有Value的字典。集合里面的元素不能重復(fù)。集合也是無序的。集合最大的應(yīng)用之一就是去重。例如,把一個帶有重復(fù)元素的列表先轉(zhuǎn)換為集合,再轉(zhuǎn)換回列表,那么重復(fù)元素就只會保留一個。把列表轉(zhuǎn)換為集合需要使用set()函數(shù),把集合轉(zhuǎn)換為列表使用list()函數(shù):example_set={1,2,3,'a','b','c'}>>>duplicated_list=[3,1,3,2,4,6,6,7,'s','s','a']>>>unique_list=list(set(duplicated_list))>>>print(unique_list)[1,2,3,4,'s',6,7,'a']2.集合順序分支循環(huán)基礎(chǔ)程序流程控制語句條件語句if這個關(guān)鍵字正如它的英文一樣,是“如果”的意思,即如果什么情況發(fā)生,就怎么樣。if的用法如下:if可以判斷真假的表達(dá)式或者是能被判斷是否為空的數(shù)據(jù)結(jié)構(gòu)在表達(dá)式的條件為真時運(yùn)行的代碼所有需要在if里面運(yùn)行的代碼都需要添加至少一個空格作為縮進(jìn),一般約定俗成用4個空格或Tab,從而方便人眼閱讀。一旦退出縮進(jìn),新的代碼就不再屬于這個if。if判斷條件:
執(zhí)行語句1
執(zhí)行語句2else:
執(zhí)行語句3
執(zhí)行語句41)在使用and連接的多個表達(dá)式中,只要有一個表達(dá)式不為真,那么后面的表達(dá)式就不會執(zhí)行。2)在使用or連接的多個表達(dá)式中,只要有一個表達(dá)式為真,那么后面的表達(dá)式就不會執(zhí)行。這個短路效應(yīng)有什么作用呢?來看看下面的代碼:name_list=[]ifname_listandname_list[100]=='張三':
print('OK')從一個空列表里面讀下標(biāo)為100的元素,顯然會導(dǎo)致Python報錯,但是像上面這樣寫卻不會有任何問題。這是因?yàn)槿绻鹡ame_list為空,那么這個判斷直接就失敗了。根據(jù)短路效應(yīng),取第100個元素的操作根本就不會執(zhí)行,也就不會報錯。只有這個列表里面至少有一個元素的時候,才會進(jìn)入第2個表達(dá)式“name_list[100]=='張三'”的判斷。短路效應(yīng)對于多重條件的判斷,需要使用“if...elif...else...”。其中,“elif”可以有0個,也可以有多個,但是else只能有0個或者1個。例如下面的代碼:choice=int(input(“選擇1-4“))ifchoice
==2:
print('回答正確')elifchoice
==4:
print(…)
else:print('回答錯誤')“if...else...”主要用于非此即彼的條件判斷。如果正確就執(zhí)行第3行代碼,如果錯誤就執(zhí)行第5行代碼。第3行和第5行只會執(zhí)行其中之一,絕對不可能同時執(zhí)行。多重條件判斷使用字典實(shí)現(xiàn)多重條件控制如果有多個if,寫起來會很煩瑣,例如下面這一段代碼:ifstate=='start':
code=1elifstate=='running':
code=2elifstate=='offline':
code=3elifstate=='unknown':
code=4else:
code=5使用“if...elif...else...”會讓代碼顯得冗長。如果使用字典改寫,代碼就會變得非常簡潔:state_dict={'start':1,'running':2,'offline':3,'unknown':4}code=state_dict.get(state,5)2.3.6for循環(huán)與while循環(huán)所謂循環(huán),就是讓一段代碼反復(fù)運(yùn)行多次。例如把“爬蟲”這個詞打印3次,讀者可能會先寫一行代碼,然后復(fù)制、粘貼:print('扒蟲')print('扒蟲')print('扒蟲')但是粘貼完后才發(fā)現(xiàn)把“爬蟲”寫成了“扒蟲”,于是又要一行代碼一行代碼地去修改。這樣的寫法,不僅增加了大量重復(fù)的代碼,還會使維護(hù)和重構(gòu)變得很麻煩。為了解決這個問題,就有了循環(huán)。在上面的例子中,想把“爬蟲”打印5次,只需要兩行代碼:foriinrange(3):
print('爬蟲')for循環(huán)的常見寫法為:forxiny:循環(huán)體先來看看Python獨(dú)有的for循環(huán)寫法。從“可迭代”的對象中獲得每一個元素,代碼和運(yùn)行結(jié)果如圖2-24所示。圖2-24所示的是for循環(huán)從列表中取出每一個元素。將列表換成元組或者集合再運(yùn)行代碼,可以發(fā)現(xiàn)效果一樣。for循環(huán)圖2-24讀取列表中的每一個元素并打印
for循環(huán)也可以直接從字符串里面獲得每一個字符,如圖2-25所示。在做爬蟲的時候會遇到需要把列表展開的情況,常犯的一個錯誤就是把字符串錯當(dāng)成了列表展開。這個時候就會得到不正常的結(jié)果。for循環(huán)和字符串圖2-25for循環(huán)讀取字符串里面的每一個字符for循環(huán)也可以把一個字典展開,得到里面的每一個Key,如圖2-26所示。這個循環(huán)一共進(jìn)行了3輪,每一輪可以得到字典的一個Key。再來看看幾乎所有編程語言中都有的寫法,如圖2-27所示。for循環(huán)的不同形式圖2-26for循環(huán)獲取字典每一個Key圖2-27最常見的按次數(shù)循環(huán)while循環(huán)主要用在不知道循環(huán)需要執(zhí)行多少次的情況。這種情況下,要么讓程序永遠(yuǎn)運(yùn)行,要么在某個特定的條件下才結(jié)束,如圖2-28所示。
圖2-28中代碼的意義為,如果i的值小于10,那么就進(jìn)入循環(huán),打印一句話,然后讓i增加1。使用while循環(huán)最常遇到的問題就是循環(huán)停不下來。如果忘記讓i增加1,那么i就會永遠(yuǎn)小于10,循環(huán)也就永遠(yuǎn)停不下來了。讀者可以把第4行代碼注釋以后運(yùn)行,看看會出現(xiàn)什么樣的效果。while循環(huán)圖2-28while循環(huán)運(yùn)行10次While一般用于循環(huán)次數(shù)不確定,但是結(jié)束條件確定的程序。比如在100-300中找到第一個素數(shù)。while循環(huán)和for循環(huán)是等價的在循環(huán)的運(yùn)行中,可能會遇到在某些時候不需要繼續(xù)執(zhí)行的情況,此時需要使用continue關(guān)鍵字來跳過本次循環(huán)。請看圖2-29所示的代碼運(yùn)行結(jié)果。當(dāng)名字為“王五”的時候,跳過后面的代碼。continue只會影響到本次循環(huán),后面的循環(huán)不受影響。當(dāng)遇到某些情況時,需要結(jié)束整個循環(huán),這個時候需要使用break關(guān)鍵字。請看圖2-30所示的代碼。跳過本次循環(huán)與退出循環(huán)圖2-29使用continue跳過一次循環(huán)
圖2-30使用break提前結(jié)束整個循環(huán)while循環(huán)和for循環(huán)在使用continue和break的時候完全相同,請各位讀者自行測試。特別注意:在循環(huán)里面還有循環(huán)(循環(huán)嵌套)的時候,continue和break都只對自己所在的這一層循環(huán)有效,不會影響外面的循環(huán)。循環(huán)注意事項2.4.1函數(shù)什么是函數(shù)所謂的函數(shù),就是一套定義好的流程:輸入數(shù)據(jù),得到結(jié)果。在現(xiàn)實(shí)生活中,函數(shù)可以體現(xiàn)在方方面面。對廚師來講,每一個菜譜都是函數(shù);對農(nóng)民來講,每一種種菜的方法都是函數(shù);對建筑工人來講,每一個結(jié)構(gòu)的修建都是函數(shù);對司機(jī)來講,在不同路線上的駕駛方式也是函數(shù)……
兩個函數(shù)之間可能相互獨(dú)立,也可能一個函數(shù)的輸入是另一個函數(shù)的輸出,也可能在一個函數(shù)內(nèi)部調(diào)用另一個函數(shù)。2.4函數(shù)與類例2-1:現(xiàn)在想得到兩個房間在不同情況的溫度的統(tǒng)計信息,包括這兩個房間溫度的和、差、積、商、平均數(shù)。(1)不使用函數(shù)(2)使用函數(shù)函數(shù)的作用1:不使用函數(shù)時情況發(fā)生變化就要把所有代碼全部復(fù)制一份2:使用函數(shù)時情況發(fā)生變化后調(diào)用函數(shù),計算新的情況下的各類信息在Python里面,可使用def這個關(guān)鍵字來定義一個函數(shù)。一個函數(shù)的結(jié)構(gòu)一般如下:def函數(shù)名(參數(shù)1,參數(shù)2,參數(shù)3):
函數(shù)體第一行
函數(shù)體第二行
函數(shù)體第三行
…
函數(shù)體第n行
return返回值函數(shù)體也要保持縮進(jìn),表示這是一個代碼段
定義函數(shù)一個函數(shù)可以有參數(shù),也可以沒有參數(shù)。如果沒有參數(shù),函數(shù)名后面為一對空括號。如果函數(shù)有參數(shù),參數(shù)可以有一個,也可以有很多個,參數(shù)可以是任何數(shù)據(jù)類型的。函數(shù)的參數(shù)甚至可以是另一個函數(shù)。一個函數(shù)有至少一個返回值,可以人為指定返回任何類型的數(shù)據(jù)。如果沒有人為指定,那么返回值為None,返回值的個數(shù)可以是一個,也可以是多個。函數(shù)的返回值可以是另一個函數(shù)。下面3種情況是等價的。(1)沒有return。(2)return(只有return,后面不跟任何變量)。(3)returnNone。在函數(shù)中,可以使用return將里面的結(jié)果返回出來。代碼一旦運(yùn)行到了return,那么函數(shù)就會結(jié)束,return后面的代碼都不會被執(zhí)行。函數(shù)參數(shù)和返回值一個函數(shù)可以沒有return語句,可以有一個return語句,也可以有多個return語句,但是只有一個return語句生效。請注意這里“return后面的代碼”的真正意思,如圖2-31所示。在圖2-31所示的func_example_1()函數(shù)中:b=2+2print(b)這兩行是return后面的代碼,這兩行代碼是
永遠(yuǎn)不會被執(zhí)行的。但是在圖2-31所示的func_example_2(x)
這個函數(shù)中:elif0<x<=1:
returnx*10else:
return100函數(shù)的返回值圖2-31return后面的代碼圖2-32分支在邏輯上是并列的在一個Python工程中,應(yīng)該保證每個函數(shù)的名字唯一。函數(shù)體就是這個函數(shù)需要執(zhí)行的一系列操作。操作可能只有一行,也可能有很多行。一個函數(shù)只做一件事情,Python編碼規(guī)范建議一個函數(shù)的函數(shù)體不超過20行代碼。如果超過了,說明這個函數(shù)做了不止一件事情,就應(yīng)該把這個函數(shù)拆分為更小的函數(shù)。這也就暗示了在函數(shù)體里面也可以調(diào)用其他的函數(shù)。函數(shù)的規(guī)定例2-2:接收由用戶輸入的通過逗號分隔的兩個非零整數(shù),計算這兩個數(shù)字的和、差、積、商,并將結(jié)果返回給用戶。問題分析:這個問題其實(shí)涉及3個相對獨(dú)立的過程。①得到用戶輸入的數(shù)據(jù)。②計算兩個數(shù)字的和、差、積、商。③將結(jié)果打印出來。這3個過程可以定義成3個函數(shù),分別為如下。①get_input()。②calc(a,b)。③output(result)。調(diào)用函數(shù)(1)get_input()
這個函數(shù)沒有參數(shù),它負(fù)責(zé)接收用戶的輸入。這里用到了Python的input關(guān)鍵字,這個關(guān)鍵字可以接收用戶輸入的字符串,并將得到的字符串返回給一個變量。需要注意的是,input返回的一定是一個字符串,所以get_input()這個函數(shù)不僅需要接收輸入,還需要將輸入的形如'10,5'的字符串轉(zhuǎn)換為兩個整數(shù):10和5。(2)calc(a,b)這個函數(shù)只負(fù)責(zé)計算。對它來說,a、b兩個參數(shù)就是兩個數(shù)字。它只需要計算這兩個數(shù)字的和、差、積、商,并將結(jié)果保存為一個字典返回即可。(3)output(result)這個函數(shù)只負(fù)責(zé)輸出,將result這個字典中的值打印到屏幕上。三個函數(shù)在圖中的代碼里面可以看到,3個函數(shù)是按順序獨(dú)立運(yùn)行的,后一個函數(shù)的輸入是前一個函數(shù)的輸出。數(shù)據(jù)流將3個函數(shù)連起來了。再來看圖2-34,運(yùn)行結(jié)果和上面的是完全一樣的,但是這里演示了在函數(shù)里面運(yùn)行另一個函數(shù)的情況。代碼展示
圖2-33順序執(zhí)行函數(shù),接收用戶輸入并計算
圖2-34函數(shù)中調(diào)用函數(shù),接收用戶輸入并計算
通過以上示例說明:函數(shù)之間可以串行運(yùn)行,數(shù)據(jù)先由一個函數(shù)處理,再由另一個函數(shù)處理;函數(shù)也可以嵌套運(yùn)行,在一個函數(shù)里面調(diào)用另一個函數(shù)。當(dāng)然,在函數(shù)里面還可以定義函數(shù)。這就屬于比較高級的用法了,這里略去不講,有興趣的讀者可以閱讀Python的官方文檔。如果有參數(shù),定義函數(shù)的時候就需要把參數(shù)名都寫好。有時候會有這樣的情況:一個函數(shù)有很多的參數(shù),假設(shè)有5個參數(shù),其中4個參數(shù)在絕大多數(shù)情況下都是固定的4個值,只有極少數(shù)情況下需要手動修改,于是稱這固定的4個值為這4個參數(shù)的默認(rèn)值。如果每次調(diào)用這個函數(shù)都要把這些默認(rèn)值帶上,就顯得非常麻煩。這種情況在Python開發(fā)中特別常見,尤其是在一些科學(xué)計算的第三方庫中。函數(shù)參數(shù)的默認(rèn)值在這段代碼中,兩個整數(shù)是以英文逗號來分隔的,那么可不可以使用其他符號來分隔呢?來看一下下面這段代碼:defget_input(split_char):
input_string=input('請輸入由{}分隔的兩個非零整數(shù):'.format(split_char))
a_string,b_string=input_string.split(split_char)
returnint(a_string),int(b_string)來運(yùn)行一下這段代碼,這一次使用
#號來分隔,如圖2-35所示。圖2-35使用#號分隔兩個數(shù)字是否可以既能用英文逗號分隔,又可以用#號分隔,并且默認(rèn)情況下使用英文逗號分隔呢?如果每次調(diào)用這個函數(shù)的時候都必須寫成a,b=get_input(','),真的很麻煩,而且如果一不小心漏掉了這個參數(shù),還會導(dǎo)致程序報錯,如圖2-36所示。參數(shù)的默認(rèn)值
圖2-36漏掉了函數(shù)參數(shù)導(dǎo)致報錯在Python里面,函數(shù)的參數(shù)可以有默認(rèn)值。當(dāng)調(diào)用函數(shù)的時候不寫參數(shù)時,函數(shù)就會使用默認(rèn)參數(shù)。請看下面的代碼:defget_input_with_default_para(split_char=','):
input_string=input('請輸入由{}分隔的兩個非零整數(shù):'.format(split_char))
a_string,b_string=input_string.split(split_char)
returnint(a_string),int(b_string)運(yùn)行效果如圖2-37所示。函數(shù)參數(shù)的默認(rèn)值圖2-37調(diào)用帶有默認(rèn)參數(shù)的函數(shù)的運(yùn)行結(jié)果如果調(diào)用函數(shù)get_input_with_default_para時不寫參數(shù),就會使用默認(rèn)的逗號;如果帶上了參數(shù),那么就會使用這個參數(shù)對應(yīng)的符號來作為分隔符。函數(shù)也可以有多個默認(rèn)參數(shù),例如如下的代碼:defprint_x_y_z(x=100,y=0,z=50):
print('x的值為{},y的值為{},z的值為{}'.format(x,y,z))
print_x_y_z(1,2,3)#直接寫上3個參數(shù),從左到右依次賦值print_x_y_z(6)#只寫一個值的時候,優(yōu)先賦值給左邊的參數(shù)print_x_y_z(y=-8)#也可以指定參數(shù)的名字,將值直接賦給指定的參數(shù)print_x_y_z(y='哈哈',x='嘿嘿')#如果指定了參數(shù)名,那么參數(shù)順序就無關(guān)緊要函數(shù)參數(shù)的默認(rèn)值運(yùn)行結(jié)果如圖2-38所示。在調(diào)用函數(shù)的時候,如果指定了參數(shù)名,就會把值賦給這個參數(shù);如果沒有指定參數(shù)名,就會從左到右依次賦值給各個參數(shù)。圖2-38調(diào)用含有多個默認(rèn)參數(shù)的函數(shù)的運(yùn)行結(jié)果
1)函數(shù)參數(shù)的類型決定了它的作用范圍函數(shù)外面的容器類作為參數(shù)傳遞到函數(shù)中以后,如果函數(shù)修改了這個容器里面的值,那么函數(shù)外面的容器也會受到影響。但是函數(shù)外面的普通變量作為參數(shù)傳遞到函數(shù)中,并且函數(shù)修改了這個參數(shù)的時候,外面的變量不受影響。為了更好地理解這段話,請看圖2-39的運(yùn)行結(jié)果。在代碼中演示的容器類為列表,對字典和集合同樣適用。Python函數(shù)的注意事項圖2-39函數(shù)可以修改容器類的數(shù)據(jù)
但不能修改普通變量請看下面的代碼,并猜測其輸出:defdefault_para_trap(para=[],value=0):
para.append(value)
returnparaprint('第一步')print('函數(shù)返回值:{}'.format(default_para_trap(value=100)))print('第二步')print('函數(shù)返回值:{}'.format(default_para_trap(value=50)))默認(rèn)參數(shù)陷阱圖2-40實(shí)際運(yùn)行效果
運(yùn)行結(jié)果運(yùn)行結(jié)果如圖2-41所示。修改后的運(yùn)行效果
圖2-41修改后的運(yùn)行結(jié)果在Python里面,一切都是對象。請看下面的代碼:a='abc,def'a_prefix,a_suffix=a.split(',')b=[1,2,3]b.append(4)b.extend([5,6,7])b.pop()c={'x':1,'y':2,'z':3}c.get('x')在上面的代碼中,出現(xiàn)了好幾個“xxx.yyy('zzz')”形式的語句,其中的“split”“append”“extend”“pop”“get”在面向?qū)ο缶幊讨薪凶饕粋€對象的“方法”。代碼中的“a”“a_prefix”“a_suffix”都是字符串對象,“b”是列表對象,“c”是字典對象。對象有“屬性”和“方法”?!皩傩浴本褪敲枋鲞@個對象的各種標(biāo)簽,“方法”就是這個對象可以做的動作。2.4.2類與面向?qū)ο缶幊虒ο罂梢灾挥袑傩詻]有方法,也可以只有方法沒有屬性。首先要有類,才能有對象。所以在Pyt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度汽車經(jīng)銷商集團(tuán)促銷活動合同
- 2025年中國電腦肛腸綜合治療儀市場調(diào)查研究報告
- 二零二五年度個人房產(chǎn)買賣合同(含交易傭金處理)
- 二零二五年度教育培訓(xùn)機(jī)構(gòu)店鋪?zhàn)赓U合同協(xié)議書
- 2025年度解除勞動合同經(jīng)濟(jì)補(bǔ)償金發(fā)放標(biāo)準(zhǔn)及爭議解決合同
- 二零二五年度文化產(chǎn)業(yè)園運(yùn)營管理派遣服務(wù)協(xié)議
- 二零二五年度進(jìn)口汽車贈與及保修協(xié)議
- 二零二五年度戶外廣告牌租賃與智能廣告投放協(xié)議
- 二零二五年度抖音賬號資源共享合作協(xié)議
- 2025年度知識產(chǎn)權(quán)股權(quán)轉(zhuǎn)讓合同終止執(zhí)行函
- 翰威特任職資格撰寫培訓(xùn)材料
- 大家排好隊說課
- 鐵氧體永磁材料
- 湘教版初中數(shù)學(xué)教材目錄
- 金蝶云星辰初級考試題庫
- GM/T 0107-2021智能IC卡密鑰管理系統(tǒng)基本技術(shù)要求
- GB/T 6967-2009工程結(jié)構(gòu)用中、高強(qiáng)度不銹鋼鑄件
- 部編版七年級下冊語文第一單元課件
- 2023年山東省青島市統(tǒng)招專升本管理學(xué)自考真題(含答案)
- 文化產(chǎn)業(yè)政策與法規(guī)課件
- 人教版八年級下冊生物全冊教案完整版教學(xué)設(shè)計含教學(xué)反思
評論
0/150
提交評論