摘要:元組也支持內(nèi)置函數(shù)的參數(shù)必須是一個(gè)序列字符串列表元組元組有什么用既然中有這么個(gè)數(shù)據(jù)結(jié)構(gòu),自然就有它的用武之地。
引言
想學(xué)爬蟲還是 python 專業(yè)啊,之前一直在用 java, 現(xiàn)在決定嘗嘗鮮,使用 python及爬蟲框架來完成網(wǎng)絡(luò)數(shù)據(jù)采集。
編程語言之間都是相通的,比如都需要模塊化,引入其他文件來實(shí)現(xiàn)功能,使用列表等容器來處理數(shù)據(jù),都要使用 json 或 xml 來解析和傳輸數(shù)據(jù)。
你會(huì)發(fā)現(xiàn)通過 類比 的方式,帶著問題去學(xué)習(xí),你會(huì)發(fā)現(xiàn)走的很快
而且我認(rèn)為代碼示例的作用是 異常強(qiáng)大的, 我會(huì)盡量使用代碼示例的方式來展示,以滿足同學(xué)快速學(xué)習(xí)的需要,也備后續(xù)查詢。
下面就是在 使用 python 過程中的問題總結(jié),okay,讓我們一起來歷險(xiǎn)吧~
String 有哪些有用的方法?不管是哪種語言,用的最多的類型估計(jì)都是 string (字符串),要想快速入門 python, 掌握 string 也是必須的。
在 java 中使用最多的 string 功能,我也會(huì)帶著同樣的疑問來了解 python 該使用什么方法實(shí)現(xiàn)。如果這里沒有你要找的方法,可以到 python string 官方地址完整方法去查詢
如何拼接字符串?使用 + 號(hào)來拼接,要注意的是,當(dāng)有數(shù)字的時(shí)候一定要轉(zhuǎn)化為字符串格式 str(value) 才能夠相加,不然會(huì)報(bào)錯(cuò)。
使用%進(jìn)行拼接,和占位符的概念比較類似,這里舉個(gè)栗子
hour = 9 minutes = 45 print("it"s %d:%d minutes!" %(hour, minutes))如何分隔字符串?
# 對(duì)字符串分割 split_str = "a-b-c-d" print(split_str.split("-"))如何獲取字符串長(zhǎng)度
# 獲取字符串的長(zhǎng)度 print(len("banana"))如何將 list 拼接成字符串
# 以 - 做間隔,拼接字符串 join_str_list = ["a", "b", "c", "d"] print("-".join(join_str_list)) # 這里就是用 - 拼接后的值如何分割字符串?
split_str = "a-b-c-d" print(split_str.split("-"))如何去除字符串中的空格?
去除字符串中空格分為 3 種
去除兩端的空格
去除左邊的空格
去除右邊的空格
# 去除字符串中的空格 strToStrip = " abc " print(strToStrip.strip()) # 去除兩端空格 print(strToStrip.lstrip()) # 去除左邊空格 print(strToStrip.rstrip()) # 去除右邊空格如何子字符串是否包含在父字符串中?
child_str = "abc" print("abcd".find(child_str)) # 如果存在就返回首字母下標(biāo),不存在返回 -1python 有哪些有用的容器?
學(xué)過 java 的都知道,在 java 中使用最多的容器有 List, Map, Set, Array,這些容器可以讓我們方便的存儲(chǔ)并操作數(shù)據(jù),那么 python 中又有哪些類似的容器可供我們使用呢?
列表 listpython 中也有列表,功能包含了 java 列表,而且更牛的是它可以 包含不同類型的元素
。
["a", 10, 1.5] # 這就是一個(gè)列表,只需要方括號(hào)包起來即可如何遍歷一個(gè)列表
有兩種方式可實(shí)現(xiàn)
for 循環(huán)的方式,這當(dāng)然是最常見的
list = ["a", 1, 1.4] for item in list: print(item)
在只需要讀取列表的元素本身時(shí)這種方式當(dāng)然很優(yōu)雅。但如果需要獲取元素的下標(biāo),就力不從心了,這就需要下面的方式。
使用內(nèi)置函數(shù) range 和 len, 操作元素下表
list = ["a", 1, 1.4] for i in range(len(list)): list[i] = list[i] * 2 print(list[i])如何對(duì)列表切片?
pyton 中專門有切片操作符 :, 想切多厚切多厚,這可比 java 要方便不少。
通過例子來感受下吧。
alpha_list = ["a", "b", "c", "d", "e", "f", "g"] print(alpha_list[1:3]) # ["b", "c"] print(alpha_list[:4]) # ["a", "b", "c", "d"] print(alpha_list[2:]) # ["c", "d", "e", "f", "g"] print(alpha_list[:]) # ["a", "b", "c", "d", "e", "f", "g"]如何給列表添加元素?
有四種方式
在列表尾部添加元素 append(value)
將一個(gè)列表中的每個(gè)元素分別添加到另一個(gè)列表上 extend(list)
將一個(gè)元素插入到列表的指定位置 insert(index, value)
+ 號(hào),將兩個(gè) list 直接相加, 會(huì)返回一個(gè)新的 list 對(duì)象
碼字太多了,自己都暈了,直接上代碼。
list1 = ["a", "b", "c", "d"] list1.append("e") print(list1) # ["a", "b", "c", "d", "e"] list2_1 = ["a", "b", "c", "d"] list2_2 = ["e", "f", "g"] list2_1.extend(list2_2) print(list2_1) # ["a", "b", "c", "d", "e", "f", "g"] list3 = ["a", "c", "d"] list3.insert(1, "b") # ["a", "b", "c", "d"] print(list3) # 內(nèi)存多余消耗,不推薦 list4_1 = ["a", "b"] list4_2 = ["c", "d"] print(list4_1 + list4_2) # ["a", "b", "c", "d"]刪掉元素
也有幾種方法可實(shí)現(xiàn)
修改列表,彈出被刪除的值 pop(index)
知道要?jiǎng)h除的元素時(shí) remove(value)
不需要使用刪除的值時(shí) del(index)
刪除多個(gè)值 del(index_begin, index_end)
上代碼
remove_list_1 = ["a", "b", "c"] print(remove_list_1.pop(0)) print(remove_list_1)# ["b", "c"] remove_list_2 = ["a", "b", "c"] del remove_list_2[1] print(remove_list_2)# ["a", "c"] remove_list_3 = ["a", "b", "c"] remove_list_3.remove("b") print(remove_list_3) # ["a", "c"] remove_list_4 = ["a", "b", "c"] del remove_list_4[1:2] print(remove_list_4)# ["a", "c"]字典 dict
dict 和 java 中 Map 非常類似,也是由 key 和 value 組成的,也是
使用 散列表 的算法存儲(chǔ), 用過 java 的同學(xué)就直接把它當(dāng)做 Java HashMap 來用就可以啦。另外,在語法上要比 java 也要簡(jiǎn)潔不少。
a_dict = dict() # 這樣就創(chuàng)建了一個(gè)空字典 a_dict["one"] = 1 # 塞進(jìn)去一個(gè)元素 not_empty_dict = {"one": 1, "two": 2, "three": 3} # 這是一個(gè)包含數(shù)據(jù)的字典遍歷 dict
使用 for 循環(huán)遍歷所有字典,可以遍歷字典中的 key,這樣的遍歷是沒有特定順序的,如果想按照順序遍歷需要使用內(nèi)置函數(shù) sorted
d = {"b": 2, "a": 1, "c": 3} for item_key in d: print(item_key, d[item_key]) for item_key in sorted(d): print(item_key, d[item_key])
那我如果想要遍歷 dict 中的 values 呢?
還真有一個(gè)方法叫 values(), 它會(huì)返回一個(gè)值集合,并可以應(yīng)用 in 操作符遍歷
d = {"b": 2, "a": 1, "c": 3} for value in d.values(): print(value) for sorted_value in sorted(d.values()): print(sorted_value)元組
什么是元組? java 中可沒有聽過內(nèi)置元組這樣的數(shù)據(jù)結(jié)構(gòu)。
在前面已經(jīng)講了列表,知道一個(gè)列表可以存儲(chǔ)多個(gè)數(shù)據(jù)結(jié)構(gòu)。元組和列表很像,但要記住它們間的一個(gè)重要區(qū)別: 元組是不可變的。
如何創(chuàng)建元組?把各個(gè)類型的元素用逗號(hào)分隔,就可以得到一個(gè)元組,為了好看,常常用括號(hào)再圍起來
使用內(nèi)置函數(shù) tuple() 也可以創(chuàng)建元組
注意,由于元組是不可變的,無法修改它的元素。但我們可以使用將多個(gè)元組結(jié)合成一個(gè)新的元組。(元組也支持 +)
tuple_a = 1, 2, 3, 4, 5 tuple_b = (1, 2, 3, 4, 5) # tuple 內(nèi)置函數(shù)的參數(shù)必須是一個(gè)序列 tupe_c = tuple("12345") # 字符串 tuple_e = tuple([1, 2, 3, 4, 5]) # 列表 tuple_f = tuple((1,2,3,4,5)) # 元組 tuple_d = tuple_a + tuple_b print(tuple_d)元組有什么用?
既然 python 中有這么個(gè)數(shù)據(jù)結(jié)構(gòu),自然就有它的用武之地。還別說,它的用途還真不少。
交換變量 和 對(duì)多個(gè)變量賦值 更方便,優(yōu)雅了
a = 5 b = 4 a,b = b,a # 等式左邊是一個(gè)變量的元組 # 等式右邊是表達(dá)式的元組,可以是(字符串,列表,元組都行) c,d = (1,2), [1,2,3] print(c) print(d)
可以在函數(shù)中返回多個(gè)值,將它們裝到元組里就行
def min_max(list): return min(list), max(list) num_list = [3, 1, 5, 2] print(min_max(num_list))其他
上面講述的都是一些大的主題,除了這些,還有一些相對(duì)小些的。
雖然小,但也很重要。這些小且重要的部分都在這個(gè)部分存放吧。
我們知道 java 中由于變量類型的存在,可以在一個(gè) class 內(nèi)聲明全局變量,從而在 class 的各個(gè)方法中讀取和賦值。
而這點(diǎn)在 python 中卻是行不通的,因?yàn)?python 中沒有變量類型, 如果在文件中聲明一個(gè)全局變量,再在函數(shù)內(nèi)對(duì)這個(gè)變量賦值,會(huì)直接導(dǎo)致錯(cuò)誤產(chǎn)生。這是因?yàn)樵诤瘮?shù)內(nèi)又重新創(chuàng)建了一個(gè)局部變量。讀取全局變量也有這個(gè)問題。
那該怎么辦呢?嗯~o( ̄▽ ̄)o global 關(guān)鍵字就要登場(chǎng)了。
在函數(shù)內(nèi)部,使用全局變量前,先用 global 關(guān)鍵字聲明下這個(gè)變量,表示這個(gè)變量是全局變量,后面再使用就 okay啦。
上栗子...
g_variable = 3 def test_g_variable(): global g_variable print(g_variable) # 3 g_variable = 2 print(g_variable) # 2 test_g_variable()結(jié)語
上面并沒有把 python 講完,還類和對(duì)象,文件,JSON處理, XML 處理 等重要主題,這些會(huì)在下篇文章中涉及,敬請(qǐng)期待。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/44938.html
摘要:元組也支持內(nèi)置函數(shù)的參數(shù)必須是一個(gè)序列字符串列表元組元組有什么用既然中有這么個(gè)數(shù)據(jù)結(jié)構(gòu),自然就有它的用武之地。 引言 想學(xué)爬蟲還是 python 專業(yè)啊,之前一直在用 java, 現(xiàn)在決定嘗嘗鮮,使用 python及爬蟲框架來完成網(wǎng)絡(luò)數(shù)據(jù)采集。編程語言之間都是相通的,比如都需要模塊化,引入其他文件來實(shí)現(xiàn)功能,使用列表等容器來處理數(shù)據(jù),都要使用 json 或 xml 來解析和傳輸數(shù)據(jù)。你...
摘要:大多數(shù)待遇豐厚的開發(fā)職位都要求開發(fā)者精通多線程技術(shù)并且有豐富的程序開發(fā)調(diào)試優(yōu)化經(jīng)驗(yàn),所以線程相關(guān)的問題在面試中經(jīng)常會(huì)被提到。將對(duì)象編碼為字節(jié)流稱之為序列化,反之將字節(jié)流重建成對(duì)象稱之為反序列化。 JVM 內(nèi)存溢出實(shí)例 - 實(shí)戰(zhàn) JVM(二) 介紹 JVM 內(nèi)存溢出產(chǎn)生情況分析 Java - 注解詳解 詳細(xì)介紹 Java 注解的使用,有利于學(xué)習(xí)編譯時(shí)注解 Java 程序員快速上手 Kot...
摘要:嗷大喵和他的小伙伴們快樂的生活在一起,他們總是能給大家?guī)須g樂。大家都說嗷大喵真棒。大家要做的就是解救嗷大喵遠(yuǎn)離惡龍。 導(dǎo)語 哈嘍~大家好,我是木子,首先今天木子先給大家講個(gè)小故事: 在喵界有這樣一只網(wǎng)紅——混跡于二次元、表情包界,賤萌活潑,調(diào)皮機(jī)靈,白色的大圓臉,脖子 上系了個(gè)鈴鐺,年齡不...
摘要:基礎(chǔ)知識(shí)復(fù)習(xí)后端掘金的作用表示靜態(tài)修飾符,使用修飾的變量,在中分配內(nèi)存后一直存在,直到程序退出才釋放空間。將對(duì)象編碼為字節(jié)流稱之為序列化,反之將字節(jié)流重建成對(duì)象稱之為反序列化。 Java 學(xué)習(xí)過程|完整思維導(dǎo)圖 - 后端 - 掘金JVM 1. 內(nèi)存模型( 內(nèi)存分為幾部分? 堆溢出、棧溢出原因及實(shí)例?線上如何排查?) 2. 類加載機(jī)制 3. 垃圾回收 Java基礎(chǔ) 什么是接口?什么是抽象...
閱讀 1292·2023-04-26 01:03
閱讀 1907·2021-11-23 09:51
閱讀 3299·2021-11-22 15:24
閱讀 2662·2021-09-22 15:18
閱讀 1010·2019-08-30 15:55
閱讀 3458·2019-08-30 15:54
閱讀 2234·2019-08-30 15:53
閱讀 2387·2019-08-30 15:44