国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python 歷險(xiǎn)記——一個(gè) Java 程序員的告白(一)

newtrek / 3507人閱讀

摘要:元組也支持內(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ù),都要使用 jsonxml 來解析和傳輸數(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),不存在返回 -1
python 有哪些有用的容器?

學(xué)過 java 的都知道,在 java 中使用最多的容器有 List, Map, Set, Array,這些容器可以讓我們方便的存儲(chǔ)并操作數(shù)據(jù),那么 python 中又有哪些類似的容器可供我們使用呢?

列表 list

python 中也有列表,功能包含了 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 非常類似,也是由 keyvalue 組成的,也是
使用 散列表 的算法存儲(chǔ), 用過 java 的同學(xué)就直接把它當(dāng)做 Java HashMap 來用就可以啦。另外,在語法上要比 java 也要簡(jiǎn)潔不少。

創(chuàng)建 dict 添加元素
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

相關(guān)文章

  • python 險(xiǎn)記——個(gè) Java 序員告白

    摘要:元組也支持內(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ù)。你...

    leejan97 評(píng)論0 收藏0
  • Java開發(fā)

    摘要:大多數(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...

    LuDongWei 評(píng)論0 收藏0
  • 【Pygame實(shí)戰(zhàn)】嗷大喵險(xiǎn)記序員吸貓指南:真太上頭了~

    摘要:嗷大喵和他的小伙伴們快樂的生活在一起,他們總是能給大家?guī)須g樂。大家都說嗷大喵真棒。大家要做的就是解救嗷大喵遠(yuǎn)離惡龍。 導(dǎo)語 哈嘍~大家好,我是木子,首先今天木子先給大家講個(gè)小故事: 在喵界有這樣一只網(wǎng)紅——混跡于二次元、表情包界,賤萌活潑,調(diào)皮機(jī)靈,白色的大圓臉,脖子 上系了個(gè)鈴鐺,年齡不...

    dreamans 評(píng)論0 收藏0
  • java 基礎(chǔ) - 收藏集 - 掘金

    摘要:基礎(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ǔ) 什么是接口?什么是抽象...

    makeFoxPlay 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<