來自Java程序員的Python新手入門小結(jié)

歡迎訪問我的GitHub

https://github.com/zq2599/blog_demos

內(nèi)容:所有原創(chuàng)文章分類匯總及配套源碼辫继,涉及Java、Docker蝠筑、Kubernetes、DevOPS等审轮;

本篇概覽

  • 欣宸是個(gè)Java程序員损敷,最近正在學(xué)習(xí)Python烂斋,本文記錄了學(xué)習(xí)過程屹逛,以及一點(diǎn)自己的思考础废,主要用途是作為筆記來總結(jié)和溫習(xí),另外如果您也是一位初學(xué)Python的Java程序員罕模,希望本文能給您一些參考评腺;

版本

操作系統(tǒng):macOS Big Sur (11.6)
Anaconda3:2021.05
python:3.7.3
Jupyter Notebook:5.7.8

工具

  • 編輯器用的是Jupyter Notebook,以下三個(gè)快捷鍵最常用到淑掌,尤其是第三個(gè)蒿讥,執(zhí)行當(dāng)前行,并新增一行:
在這里插入圖片描述
  • 廢話不多說了抛腕,直接開始動(dòng)手操作芋绸;

除法

  • 一個(gè)斜杠的除法,結(jié)果是浮點(diǎn)型担敌,兩個(gè)斜杠的觸發(fā)摔敛,結(jié)果是整形:
在這里插入圖片描述

字符串

  • 格式化的時(shí)候,可以不指定參數(shù)索引全封,此時(shí)按照出現(xiàn)順序處理:
在這里插入圖片描述
  • 也可以在花括號(hào)中添加數(shù)字:
在這里插入圖片描述
  • 還可以在花括號(hào)中添加冒號(hào)舷夺,在冒號(hào)之后添加特定的輸出格式

  • 保留小數(shù)點(diǎn)后三位,<font color="red">f</font>表示浮點(diǎn)數(shù):

在這里插入圖片描述
  • 帶符號(hào)保留小數(shù)點(diǎn)后三位售貌,<font color="red">f</font>表示浮點(diǎn)數(shù):
在這里插入圖片描述
  • 不顯示小數(shù):
在這里插入圖片描述

列表

  • 逗號(hào)分隔,方括號(hào)包裹:
在這里插入圖片描述
  • 列表各個(gè)元素的類型無需相同(這一點(diǎn)和Java數(shù)組是不同的)

  • 訪問列表中的元素疫萤,使用方括號(hào)+索引(從0開始):

在這里插入圖片描述
  • 索引數(shù)值可以為負(fù)颂跨,負(fù)一表示倒數(shù)第一:
在這里插入圖片描述
  • 與字符串的字符不同之處在于,列表的元素可以修改:
在這里插入圖片描述
  • 分片扯饶,下面代碼表示從0開始恒削,一直取到2-1位置(左閉右開):
在這里插入圖片描述
  • 分片的時(shí)候,冒號(hào)左邊不填就表示從0開始尾序,右邊不填表示直到最后一個(gè)元素:
在這里插入圖片描述
  • 分片可以接受第三個(gè)參數(shù):步長(zhǎng)钓丰,下面的表示每遍歷兩個(gè)元素才取一個(gè)
在這里插入圖片描述
  • 當(dāng)步長(zhǎng)等于負(fù)一的時(shí)候,相當(dāng)于反轉(zhuǎn)了:
在這里插入圖片描述
  • 用加號(hào)實(shí)現(xiàn)兩個(gè)列表相連:
在這里插入圖片描述
  • 列表乘以數(shù)字N每币,表示生成一個(gè)新的列表携丁,內(nèi)容是原列表的N份復(fù)制:
在這里插入圖片描述
  • append:尾部追加元素
在這里插入圖片描述
  • insert:將元素插入在指定位置
在這里插入圖片描述
  • extend:將一個(gè)列表追加到另一個(gè)列表尾部
在這里插入圖片描述
  • 方法<fon color="blue">id</font>可以查看對(duì)象的內(nèi)存地址,如下圖兰怠,可見經(jīng)歷了append梦鉴、insert、extend等操作后揭保,內(nèi)存地址不變肥橙,也就是說這些都是原地操作(in place):
在這里插入圖片描述

列表的刪除操作

  • 刪除列表元素有三種方式:pop、remove秸侣、clear

  • pop()會(huì)彈出最后一個(gè)元素:

在這里插入圖片描述
  • 也可以將索引作為入?yún)魅氪娣ぃ@樣就能刪除指定元素:
在這里插入圖片描述
  • remove方法的入?yún)⑹橇斜碇械闹党杌ィ簿褪钦业搅斜碇信c入?yún)⑾嗤脑兀瑢⑵鋭h掉椭坚,下圖可見予跌,myList中有兩個(gè)'abc',用remove會(huì)刪除第一個(gè):
在這里插入圖片描述
  • clear方法會(huì)清空列表:
在這里插入圖片描述

列表的記數(shù)和索引

  • count方法統(tǒng)計(jì)指定元素在列表中的數(shù)量藕溅,從下圖可見1在列表中出現(xiàn)了兩次:
在這里插入圖片描述
  • index查找指定元素出現(xiàn)的位置:
在這里插入圖片描述

列表排序

  • sort方法用來排序匕得,默認(rèn)是比較元素大小:
在這里插入圖片描述
  • 默認(rèn)是升序巾表,添加reverse=True表示降序:
在這里插入圖片描述
  • sort操作的是列表對(duì)象本身汁掠,還可以用全局函數(shù)sorted來排序,該函數(shù)會(huì)生成一個(gè)新的副本集币,如下圖考阱,newList是排序后的列表,而原有的myList保持不變:
在這里插入圖片描述

與列表相關(guān)的常用全局函數(shù)

  • 除了sorted鞠苟,還有一些常用的全局函數(shù)和列表有關(guān):

  • operator(取代原有的cmp)乞榨,用于比較大小以及是否相等:

在這里插入圖片描述
  • len:計(jì)算個(gè)數(shù)
在這里插入圖片描述
  • max:返回最大值
在這里插入圖片描述
  • min:返回最小值
在這里插入圖片描述
  • list:元組轉(zhuǎn)為列表
在這里插入圖片描述
  • zip:兩個(gè)列表中,同位置元素結(jié)合成一個(gè)元組当娱,最終得到一個(gè)元組列表:
在這里插入圖片描述
  • enumerate:將指定列表的每個(gè)元素與其位置下表組成一個(gè)元組吃既,最終得到一個(gè)元組列表(和上面的zip用法相似,不過簡(jiǎn)單多了跨细,range操作已經(jīng)在enumerate內(nèi)部實(shí)現(xiàn)),如下圖:
在這里插入圖片描述

元組

  • 元組與列表相似鹦倚,但是一旦創(chuàng)建就不能修改,創(chuàng)建使用的是圓括號(hào)(列表是方括號(hào))
在這里插入圖片描述
  • 要注意的是冀惭,只有一個(gè)元素的元組也要帶逗號(hào)震叙,例如<font color="blue">(1,)</font>,這很好理解散休,畢竟<font color="blue">(1)</font>就是個(gè)整數(shù)而已

  • 沒有括號(hào)媒楼,只有逗號(hào),也是元組:

在這里插入圖片描述
  • 下標(biāo)操作和列表相同:
在這里插入圖片描述
  • 列表轉(zhuǎn)元組用tuple函數(shù):
在這里插入圖片描述
  • tuple函數(shù)還能將字符串直接轉(zhuǎn)為元組:
在這里插入圖片描述
  • 修改元組會(huì)失斊萃琛:
在這里插入圖片描述
  • 修改元組的思路是創(chuàng)建新的元組划址,如下圖,用三個(gè)元組拼接的方式生成了一個(gè)新的元組限府,相比舊的猴鲫,新元組的第三個(gè)元素已經(jīng)從2變?yōu)?a',給人以修改過的感覺:
在這里插入圖片描述

字典

  • 字典和Java的map相似谣殊,由多個(gè)鍵值對(duì)構(gòu)成拂共,鍵和值之間用冒號(hào)分隔,多個(gè)鍵值之間用逗號(hào)分隔姻几,外面用大括號(hào)包裹:
在這里插入圖片描述
  • 字典看起來很像json

  • items方法返回所有元素宜狐,keys返回所有鍵势告,values返回所有值:

在這里插入圖片描述
  • 可以用鍵查找值,和Java的map一樣抚恒,不過語(yǔ)法是中括號(hào):
在這里插入圖片描述
  • 也可以用get方法返回鍵對(duì)應(yīng)的值咱台,還能指定鍵不存在時(shí)的默認(rèn)值:
在這里插入圖片描述
  • 直接用方括號(hào),可以修改俭驮,如果鍵不存在就是添加:
在這里插入圖片描述
  • update方法的入?yún)⑹橇硪粋€(gè)字典回溺,該方法可以將入?yún)⒆值涞膬?nèi)容合并進(jìn)自身:
在這里插入圖片描述
  • pop方法刪除指定元素,popitem方法刪除最后一個(gè)元素:
在這里插入圖片描述

集合(Set)

  • 提到Set混萝,Java程序員應(yīng)該不陌生遗遵,就是咱們經(jīng)常用來排重的那個(gè)Set,是個(gè)無序元素集

  • 集合用逗號(hào)分隔逸嘀,大括號(hào)包裹:

在這里插入圖片描述
  • 小結(jié)三種包裹方式:列表方括號(hào)车要,元組圓括號(hào),字典和集合大括號(hào)(字典的元素是鍵值對(duì)崭倘,集合是單個(gè)元素)翼岁,另外元組可以不包裹,有逗號(hào)就行

  • set方法可以將列表轉(zhuǎn)為集合:

在這里插入圖片描述
  • 集合的元素都是不可變類型的司光,如數(shù)值琅坡、字符串、元組

  • 可變類型不能作為集合的元素残家,如列表榆俺、字典、集合跪削,至于其中原因,看看下圖紅框的錯(cuò)誤信息迂求,如果您是個(gè)Java程序員碾盐,應(yīng)該get到了:

在這里插入圖片描述
  • 可以用減號(hào)或者difference方法求兩個(gè)集合的差集:
在這里插入圖片描述

程序邏輯控制

  • if判斷,是用if揩局、elif毫玖、else的組合,注意if凌盯、elif付枫、else的行末尾都有冒號(hào):
在這里插入圖片描述
  • python不支持switch

  • if判斷的三元操作符,賦值的時(shí)候可用if else組合:

在這里插入圖片描述
  • 普通的for循環(huán):
在這里插入圖片描述
  • 內(nèi)置函數(shù)range可以創(chuàng)建整數(shù)列表驰怎,也能在for循環(huán)中遍歷:
在這里插入圖片描述
  • while循環(huán)的語(yǔ)法和java相似:
在這里插入圖片描述
  • 循環(huán)中的break和continue與Java類似阐滩,就不贅述了

推導(dǎo)式:列表

  • 格式如下:
[生成表達(dá)式 for 變量 in 序列或迭代對(duì)象]
  • 測(cè)試如下,a就是列表推導(dǎo)式生成的列表:
在這里插入圖片描述
  • 還可以通過if增加篩選條件县忌,例如下面是只保留偶數(shù):
在這里插入圖片描述
  • 如果列表的元素也是列表掂榔,我們可以用列表推導(dǎo)將其解開继效,平鋪為一層,下圖的例子中装获,a_element是a的元素瑞信,a_element自身也是列表,還可以用推導(dǎo)將其展開:
在這里插入圖片描述

推導(dǎo)式:字典

  • 對(duì)字典用推導(dǎo)式穴豫,可以取得鍵和值的處理凡简,下面是用推導(dǎo)式生成一個(gè)新的字典,剔除了鍵為age的鍵值對(duì):
在這里插入圖片描述

推導(dǎo)式:集合

  • 下面使用推導(dǎo)式精肃,利用列表生成一個(gè)新集合秤涩,里面的值是原列表每個(gè)元素的平方,而且由于集合的不重復(fù)性肋杖,原列表中重復(fù)的元素已經(jīng)被過濾為只剩一個(gè):
在這里插入圖片描述

導(dǎo)入庫(kù)

  • 語(yǔ)法:
import 模塊名 [as 別名]
  • 例如導(dǎo)入math模塊來計(jì)算正弦值:
在這里插入圖片描述
  • 如果覺得每次在代碼中寫math太麻煩溉仑,還可以在導(dǎo)入時(shí)設(shè)置別名:
在這里插入圖片描述
  • 如果覺得別名也麻煩,能不能把<font color="blue">m.</font>也去掉状植,可以用以下語(yǔ)法:
from 模塊名 import 對(duì)象名

例如:

在這里插入圖片描述
  • 上述極簡(jiǎn)的方式是不推薦使用的浊竟,因?yàn)槿鄙倭薾amespace隔離,在API的正確性上就缺少了保障

關(guān)于自己的模塊

  • 假設(shè)有一個(gè)python文件hello.py津畸,內(nèi)容如下振定,定義了名為<font color="blue">doHello</font>的方法,再執(zhí)行一下試試:
def doHello():
    print("hello world!")

doHello()
  • 現(xiàn)在另一個(gè)文件test.py肉拓,里面會(huì)調(diào)用hello.py中的<font color="blue">doHello</font>的方法:
import hello

hello()
  • 執(zhí)行命令<font color="blue">python test.py</font>后频,結(jié)果如下,可見<font color="red">hello world!</font>輸出了兩次:
will$ python test.py 
hello world!
hello world!
  • 上述結(jié)果顯然不是我們想要的暖途,<font color="blue">test.py</font>只是想使用doHello方法卑惜,結(jié)果將hello.py中的doHello()也執(zhí)行了,需要一種方式來避免test.py中的doHello()被執(zhí)行

  • 這時(shí)候內(nèi)置變量<font color="red">name</font>就派上用場(chǎng)了(注意前后都是兩個(gè)下劃線)驻售,將hello.py改成如下內(nèi)容露久,如果執(zhí)行<font color="blue">python hello.py</font>,內(nèi)置變量<font color="red">name</font>的值就是<font color="red">main</font>欺栗,其他時(shí)候毫痕,例如hello.py被其他文件import的時(shí)候,它的值就是模塊名(這里就是hello):

def doHello():
    print("hello world!")

if __name__=='__main__':
    doHello()
  • 再試試<font color="blue">python test.py</font>迟几,這次只有一次輸出了:
will$ python test.py 
hello world!
  • 我們?cè)僭囋?lt;font color="blue">python hello.py</font>消请,也能按照預(yù)期輸出:
will$ python hello.py
hello world!

  • 對(duì)于Java程序員來說,包很好理解类腮,在python中也很相似臊泰,接下來咱們嘗試一下,創(chuàng)建名為test的包蚜枢,里面有兩個(gè)模塊:test1和test2

  • 加入包名為test因宇,咱們創(chuàng)建名為test的文件夾

  • test文件夾下七婴,新增文件<font color="blue">init.py</font>,這是個(gè)空文件

  • 創(chuàng)建文件test1.py:

def doTest1():
    print("hello test1!")
  • 再創(chuàng)建文件tes2.py:
def doTest2():
    print("hello test2!")
  • 現(xiàn)在回到test2.py文件的上一層目錄察滑,創(chuàng)建文件hello.py打厘,用來驗(yàn)證如何使用包,可見訪問方式是<font color="blue">包名.模塊名.方法名</font>:
import test.test1 as test1
import test.test2 as test2

test1.doTest1()
test2.doTest2()
  • 運(yùn)行hello.py試試:
will$ python hello.py
hello test1!
hello test2!

內(nèi)建模塊:collections

  • Java程序員對(duì)collections包不會(huì)陌生贺辰,這里面都是一些和容器相關(guān)的類户盯,為咱們的開發(fā)提供了極大便利,接下來看看該模塊常用的幾個(gè)類

  • namedtuple:可以用名字訪問內(nèi)容的元組子類,從下面的代碼可見,namedtuple可以方便的定義一個(gè)對(duì)象荤懂,很像java中的bean:

from collections import namedtuple

# 自定義元組對(duì)象
Student = namedtuple('Student', ['name', 'age'])

# 實(shí)例化Student
student = Student('Tom', 11)

# 看一下student的類型
print(type(student))

# 使用name字段
print(student.name)

# 使用age字段
print(student.age)
  • 執(zhí)行結(jié)果如下,可見student的name和age字段都能方便的訪問到硫眨,而student實(shí)例的類型是class:
will$ python test.py
<class '__main__.Student'>
Tom
11

內(nèi)建模塊:deque

  • deque是雙向隊(duì)列,在增加和刪除數(shù)據(jù)的時(shí)候比列表的性能更好(列表的讀性能更好)巢块,基本操作如下所示:
from collections import deque

# 實(shí)例化deque
dq = deque([1,2,3])

# 隊(duì)列右側(cè)增加元素
dq.append(4)

print('1. {}'.format(dq))

# 隊(duì)列左側(cè)增加元素
dq.appendleft(5)

print('2. {}'.format(dq))

# 指定位置增加元素
dq.insert(1, 6)

print('3. {}'.format(dq))

# 最右側(cè)元素彈出(刪除)
dq.pop()

print('4. {}'.format(dq))

# 最左側(cè)元素彈出
dq.popleft()

print('5. {}'.format(dq))

# 刪除元素礁阁,注意2是值,不是位置
dq.remove(2)

print('6. {}'.format(dq))

# 倒排
dq.reverse()

print('7. {}'.format(dq))
  • 執(zhí)行結(jié)果如下:
will$ python deque.py
1. deque([1, 2, 3, 4])
2. deque([5, 1, 2, 3, 4])
3. deque([5, 6, 1, 2, 3, 4])
4. deque([5, 6, 1, 2, 3])
5. deque([6, 1, 2, 3])
6. deque([6, 1, 3])
7. deque([3, 1, 6])

內(nèi)建模塊:OrderedDict

  • OrderedDict是有順序的字典族奢,如果您了解LFU(Least frequently used)算法姥闭,那么就很容易理解有序的字典了,OrderedDict中的順序是元素被添加的先后順序越走,普通用法如下:
from collections import OrderedDict

# 實(shí)例化
od = OrderedDict()

# 添加
od['a'] = 1
od['c'] = 2
od['b'] = 3

# 順序是添加的先后順序
print("1. {}".format(od))

# 打印所有的鍵
print(od.keys())

# 把一個(gè)字典合并進(jìn)來
od.update({'e':'4'})

# 順序是添加的先后順序
print("2. {}".format(od))

# 根據(jù)鍵刪除鍵值對(duì)
od.pop('a')

print("3. {}".format(od))

# 把指定鍵的鍵值對(duì)移到末尾
od.move_to_end('c')

print("4. {}".format(od))
  • 輸出如下:
will$ python ordered.py
1. OrderedDict([('a', 1), ('c', 2), ('b', 3)])
odict_keys(['a', 'c', 'b'])
2. OrderedDict([('a', 1), ('c', 2), ('b', 3), ('e', '4')])
3. OrderedDict([('c', 2), ('b', 3), ('e', '4')])
4. OrderedDict([('b', 3), ('e', '4'), ('c', 2)])

內(nèi)建模塊:defaultdict

  • defaultdict容易理解:帶有默認(rèn)值的字典棚品,用法如下所示,要注意的是defaultdict實(shí)例化的入?yún)⑹莑ambda表達(dá)式廊敌,至于這個(gè)lambda铜跑,相信java程序員并不陌生:
from collections import defaultdict

dd = defaultdict(lambda: 'ABC')

dd['a'] = 1

# 打印一個(gè)存在的鍵值
print(dd['a'])

# 打印一個(gè)不存在的鍵值
print(dd['b'])
  • 輸出如下:
will$ python defaultdict.py 
1
ABC

內(nèi)建模塊:Counter

  • Counter提供了計(jì)數(shù)器功能,下面的demo演示了用Counter將列表轉(zhuǎn)為了每個(gè)元素的統(tǒng)計(jì)結(jié)果骡澈,要注意的是most_common方法锅纺,相當(dāng)于排序和列表的功能,該方法的返回值是列表秧廉,里面的元素是元組:
from collections import Counter

# 一個(gè)普通列表
colors = ['aa', 'bb', 'cc', 'aa']

# 將列表傳給Counter進(jìn)行統(tǒng)計(jì)
result = Counter(colors)

# 打印result類型
print(type(result))

# 打印result內(nèi)容
print(result)

# 用內(nèi)置函數(shù)dict將Counter實(shí)例轉(zhuǎn)為字典
print(dict(result))

# 取統(tǒng)計(jì)值最高的前兩個(gè)元素
most = result.most_common(2)

# 檢查most_common返回值的類型
print("most_common's type {}".format(type(most)))

# 檢查most_common返回值的類型
print("most_common's value : {}".format(most))
  • 輸出結(jié)果如下:
will$ python Counter.py
<class 'collections.Counter'>
Counter({'aa': 2, 'bb': 1, 'cc': 1})
{'aa': 2, 'bb': 1, 'cc': 1}
most_common's type <class 'list'>
most_common's value : [('aa', 2), ('bb', 1)]

內(nèi)建模塊:datetime

  • 名為datetime的模塊中伞广,有個(gè)名為datetime的類
在這里插入圖片描述
  • 還可以實(shí)例化datetime對(duì)象:
在這里插入圖片描述
  • datetime對(duì)象的年月日時(shí)分秒等字段:
在這里插入圖片描述
  • 轉(zhuǎn)時(shí)間戳:
在這里插入圖片描述
  • 還可以通過strptime方法將指定格式的字符串轉(zhuǎn)為datetime對(duì)象:
在這里插入圖片描述
  • datetime對(duì)象轉(zhuǎn)字符串也是常見操作拣帽,用的是strftime方法:
在這里插入圖片描述
  • 時(shí)間的計(jì)算疼电,例如一天前,一小時(shí)后等操作减拭,可以使用datetime包的timedelta類完成:
在這里插入圖片描述
  • datetime對(duì)象可以用減法結(jié)算時(shí)間差:
在這里插入圖片描述
  • 減法特性在計(jì)算日期間隔的時(shí)候很有用:
在這里插入圖片描述

JSON處理

  • 利用json進(jìn)行對(duì)象和字符串之間的序列化蔽豺、反序列化轉(zhuǎn)換:
在這里插入圖片描述
  • 還可以用dump和load方法通過文件進(jìn)行序列化反序列化操作

內(nèi)置模塊:random

  • 生成隨機(jī)數(shù)也是常見操作:
在這里插入圖片描述
  • 還可以產(chǎn)生整形隨機(jī)數(shù),設(shè)置內(nèi)容范圍和遞增單位:
在這里插入圖片描述
  • 在一堆內(nèi)容中做隨機(jī)選擇:
在這里插入圖片描述
  • 用choices方法(注意不是choice)拧粪,可以隨機(jī)選擇指定數(shù)量的結(jié)果:
在這里插入圖片描述
  • choices得到的結(jié)果可能重復(fù)修陡,如果想不重復(fù)可以用sample方法:
在這里插入圖片描述
  • 將原有集合數(shù)據(jù)的順序打亂沧侥,相當(dāng)于洗牌的效果:
在這里插入圖片描述

函數(shù)

  • 基本函數(shù)語(yǔ)法:
def 函數(shù)名([參數(shù)列表]):
    函數(shù)體
  • 和Java不同的是,函數(shù)的入?yún)㈩愋筒⒉还潭ǎ?/li>
在這里插入圖片描述
  • 使用關(guān)鍵字pass魄鸦,可以定義一個(gè)空方法:
def test():
    pass
  • 一個(gè)函數(shù)可以返回多個(gè)值(本質(zhì)上是個(gè)元組)宴杀,調(diào)用的時(shí)候用多個(gè)變量來接收即可:
在這里插入圖片描述
  • 還可以給函數(shù)增加說明文檔,然后用help命令查看:
在這里插入圖片描述
  • 調(diào)用參數(shù)的時(shí)候可以用<font color="blue">參數(shù)名=xxx</font>的形式傳入?yún)?shù)拾因,此時(shí)參數(shù)參數(shù)的先后順序可以隨意旺罢,無所有誰(shuí)先誰(shuí)后:
在這里插入圖片描述
  • 可變參數(shù)和Java的方法也相似,先看一個(gè)星號(hào)的可變參數(shù)绢记,可以理解為元組:
在這里插入圖片描述
  • 再看兩個(gè)星號(hào)的可變參數(shù)扁达,可以理解為字典:
在這里插入圖片描述
  • 對(duì)于固定參數(shù)的函數(shù),還可以直接將字典作為入?yún)⒋老ǎ贿^要加兩個(gè)星號(hào):
在這里插入圖片描述
  • 還可以設(shè)置默認(rèn)參數(shù):
在這里插入圖片描述

lambda表達(dá)式

  • java程序員對(duì)lambda表達(dá)式很熟悉跪解,這里也差不多,來看看如何定義和使用:
在這里插入圖片描述
  • 再來看看幾個(gè)支持lambda的內(nèi)置函數(shù)签孔,熟悉lambda的使用

  • filter:過濾器叉讥,下面是個(gè)過濾奇偶數(shù)的例子,第一個(gè)參數(shù)是判斷是否過濾的邏輯骏啰,True保留节吮,第二個(gè)參數(shù)是列表,最終奇數(shù)全部被剔除判耕,只留下偶數(shù):

在這里插入圖片描述
  • map:逐一轉(zhuǎn)換透绩,下面是將奇數(shù)轉(zhuǎn)為False,偶數(shù)轉(zhuǎn)為True的例子:
在這里插入圖片描述
  • reduce:大名鼎鼎的map reduce壁熄,您應(yīng)該有所耳聞帚豪,reduce會(huì)將集合中的數(shù)據(jù)逐個(gè)取出來和前面一輪的結(jié)果做同樣的處理,最典型的當(dāng)屬累加:
在這里插入圖片描述
  • sort:排序草丧,先來看看最簡(jiǎn)單的:
在這里插入圖片描述
  • sorted可以接受排序處理函數(shù)作為參數(shù)狸臣,例如按照絕對(duì)值進(jìn)行排序,內(nèi)置函數(shù)是abs昌执,被作為參數(shù)傳給sorted:
在這里插入圖片描述
  • sorted方法會(huì)生成一個(gè)新的列表烛亦,如果想直接改變?cè)斜砭筒贿m合用sorted方法了,此時(shí)用列表的sort方法即可懂拾,如下圖煤禽,還用了reverse參數(shù)試試倒排序的功能:
在這里插入圖片描述

面向?qū)ο?/h3>
  • 身為Java程序員,天天和對(duì)象打交道岖赋,下面的代碼您應(yīng)該很容易看懂:
在這里插入圖片描述
  • 如果變量名是由兩個(gè)下劃線開始的檬果,就表示改變量是私有成員變量,不能在外部訪問:
在這里插入圖片描述
  • 與Java不同的是,創(chuàng)建對(duì)象不需要關(guān)鍵字new

  • 繼承:

class 派生類名 (父類名):
    語(yǔ)句...
  • 下面是個(gè)繼承的例子选脊,Student是父類杭抠,Pupil是子類:
# 父類
class Student:
    # 成員變量
    name = '未知'
    age = 11
    __addr= 'ShangHai'

    # 構(gòu)造方法
    def __init__(self, name, age, addr):
        print('執(zhí)行構(gòu)造方法')
        self.name = name
        self.age = age
        self.__addr = addr

    def myInfo(self):
        print('學(xué)生姓名[{}],年齡[{}恳啥,地址[{}]]'.format(self.name, self.age, self.__addr))

class Pupil(Student):
    #成員變量
    grade = 1

    # 構(gòu)造方法
    def __init__(self, name, age, addr, grade):
        # 顯式調(diào)用父類構(gòu)造方法
        Student.__init__(self, name, age, grade)

        print('執(zhí)行構(gòu)造方法(子類)')
        self.grade = grade

    # 子類自己的方法
    def myGrade(self):
        print('學(xué)生年級(jí)[{}]'.format(self.grade))
  • 執(zhí)行效果如下偏灿,符合預(yù)期:
在這里插入圖片描述

生成器

  • 先回顧一下列表推導(dǎo),下面的代碼會(huì)生成一個(gè)列表:
a = [x*2 for x in range(10)]
  • 如果列表很大就會(huì)很占用內(nèi)存空間钝的,此時(shí)我們還有另一個(gè)選擇:生成器菩混,簡(jiǎn)單的說就是將上述代碼的方括號(hào)改成圓括號(hào),這樣a就不是列表了扁藕,而是生成器沮峡,這是種特殊的迭代器:
在這里插入圖片描述

異常處理

  • 習(xí)慣了java的<font color="blue">try-catch-finally</font>,對(duì)python的異常處理就容易理解了亿柑,捕獲和處理如下:
try:
    x = 1/0
    print('不可能打印這一句')
except ZeroDivisionError as err:
    print('發(fā)生異常', err)
finally:
    print('執(zhí)行finally')
  • 輸出如下圖:
在這里插入圖片描述
  • 關(guān)鍵字<font color="blue">raise</font>可以主動(dòng)拋出異常:
在這里插入圖片描述
  • 以上就是欣宸在自學(xué)Python過程中的簡(jiǎn)化版筆記邢疙,希望能幫助您在初期抓住重點(diǎn),快速入門望薄;

你不孤單疟游,欣宸原創(chuàng)一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 數(shù)據(jù)庫(kù)+中間件系列
  6. DevOps系列

歡迎關(guān)注公眾號(hào):程序員欣宸

微信搜索「程序員欣宸」,我是欣宸痕支,期待與您一同暢游Java世界...
https://github.com/zq2599/blog_demos

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末颁虐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子卧须,更是在濱河造成了極大的恐慌另绩,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件花嘶,死亡現(xiàn)場(chǎng)離奇詭異笋籽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)椭员,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門车海,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人隘击,你說我怎么就攤上這事侍芝。” “怎么了埋同?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵州叠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我莺禁,道長(zhǎng)留量,這世上最難降的妖魔是什么窄赋? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任哟冬,我火速辦了婚禮楼熄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘浩峡。我一直安慰自己可岂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布翰灾。 她就那樣靜靜地躺著缕粹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪纸淮。 梳的紋絲不亂的頭發(fā)上平斩,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音咽块,去河邊找鬼绘面。 笑死,一個(gè)胖子當(dāng)著我的面吹牛侈沪,可吹牛的內(nèi)容都是我干的揭璃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼亭罪,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼瘦馍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起应役,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤情组,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后箩祥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呻惕,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年滥比,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了亚脆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盲泛,死狀恐怖濒持,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寺滚,我是刑警寧澤柑营,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站村视,受9級(jí)特大地震影響官套,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一奶赔、第九天 我趴在偏房一處隱蔽的房頂上張望惋嚎。 院中可真熱鬧,春花似錦站刑、人聲如沸另伍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)摆尝。三九已至,卻和暖如春因悲,著一層夾襖步出監(jiān)牢的瞬間堕汞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工晃琳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留臼朗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓蝎土,卻偏偏與公主長(zhǎng)得像视哑,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子誊涯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容