python 基礎(chǔ)2

操作列表

遍歷列表(可迭代的--Iterable)

for 循環(huán)

  1. 如何判斷一個(gè)對(duì)象是可迭代對(duì)象呢场晶?方法是通過(guò)collections模塊Iterable類(lèi)型判斷:
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整數(shù)是否可迭代
False
  1. Python內(nèi)置的enumerate函數(shù)可以把一個(gè)list變成索引-元素對(duì),這樣就可以在for循環(huán)中同時(shí)迭代索引和元素本身
>>> for i, value in enumerate(['A', 'B', 'C']):
...     print(i, value)
...
0 A
1 B
2 C
  • LOOP
>>> magicians = ['alice', 'david', 'carolina']

>>> for magician in magicians:
    print(magician)

alice
david
carolina
  • 循環(huán)很重要,因?yàn)樗亲層?jì)算機(jī)自動(dòng)完成重復(fù)工作的常見(jiàn)方式之一
  • 對(duì)列表中的每個(gè)元素母谎,都將執(zhí)行循環(huán)指定的步驟亡电,而不管列表包含多少個(gè)元素
  • 使用單數(shù)和復(fù)數(shù)式名稱碟刺,可幫助你判斷代碼段處理的是單個(gè)列表元素還是整個(gè)列表
  • 換行符\n 跋核,插入一個(gè)空行
  • for 循環(huán)后面,沒(méi)有縮進(jìn)的代碼都只執(zhí)行一次丧失,而不會(huì)重復(fù)執(zhí)行
  • 忘記縮進(jìn)出現(xiàn)的提醒:expected an indented block
  • for 語(yǔ)句末尾冒號(hào)告訴Python豺妓,下一行是循環(huán)的第一行
  • 如果你不小心遺漏了冒號(hào),將導(dǎo)致語(yǔ)法錯(cuò)誤布讹。

函數(shù)range()

  • 函數(shù)range() 讓你能夠輕松地生成一系列的數(shù)字
  • range(0,5) 只是打印數(shù)字0~4琳拭,這是在編程語(yǔ)言中經(jīng)常看到的差一行為的結(jié)果

如果要打印數(shù)字0~5描验,可用range(0,6)

>>> for i in range(0,5):
    print(i)

0
1
2
3 
4

'''
擴(kuò)展模式白嘁,else語(yǔ)句在for循環(huán)正常執(zhí)行之后才執(zhí)行并結(jié)束
for <循環(huán)變量>  in  <遍歷結(jié)構(gòu)>:
    <語(yǔ)句塊1>
else:
   <語(yǔ)句塊2>
 '''
for s in "PY":
    print("循環(huán)執(zhí)行中: " + s)
else:
    s = "循環(huán)正常結(jié)束"
print(s)
 
>>> 
循環(huán)執(zhí)行中: P
循環(huán)執(zhí)行中: Y
循環(huán)正常結(jié)束

  • 創(chuàng)建數(shù)字列表,即range() 作為list() 的參數(shù)膘流,輸出將為一個(gè)數(shù)字列表权薯。
>>> number = list(range(1,6))

>>> print(number)
[1, 2, 3, 4, 5]
  • 使用函數(shù)range() 時(shí),還可指定步長(zhǎng)(range()的一個(gè)參數(shù))
>>> number_2 = list(range(2,11,2))

>>> print(number_2)
[2, 4, 6, 8, 10]

對(duì)數(shù)字列表執(zhí)行簡(jiǎn)單的統(tǒng)計(jì)計(jì)算

  • 有幾個(gè)專門(mén)用于處理數(shù)字列表的Python函數(shù)
>>> digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> min(digits)
0
>>> max(digits)
9
>>> sum(digits)
45

切片(處理列表的部分元素)

  • 創(chuàng)建切片睡扬,可指定要使用的第一個(gè)元素最后一個(gè)元素索引[0:3]表示黍析,從索引0開(kāi)始取卖怜,直到索引3為止,但不包括索引3阐枣。即索引0马靠,12蔼两,正好是3個(gè)元素甩鳄。
  • 如果第一個(gè)索引是0,還可以省略
>>> players = ['charles', 'martina', 'michael', 'florence', 'eli']
# 未省略0
>>> print(players[0:3])
['charles', 'martina', 'michael']
# 省略0
>>> print(players[ :3])
['charles', 'martina', 'michael']
  • 使用[2: ]额划,始于第二個(gè)元素妙啃,終于列表末尾
  • 無(wú)論列表多長(zhǎng),這種語(yǔ)法都能夠讓你輸出從特定位置到列表末尾的所有元素
  • 類(lèi)似的,既然Python支持players[-1]取倒數(shù)第一個(gè)元素揖赴,那么它同樣支持倒數(shù)切片
>>> players[-1]
'eli'
>>> players[-2:]
['florence', 'eli']
>>> players[-2:-1]
['florence']
>>> players[-4]
'martina'
  • tuple也是一種list馆匿,唯一區(qū)別是tuple不可變。因此燥滑,tuple也可以用切片操作渐北,只是操作的結(jié)果仍是tuple
  • 字符串'xxx'也可以看成是一種list,每個(gè)元素就是一個(gè)字符铭拧。因此赃蛛,字符串也可以用切片操作,只是操作結(jié)果仍是字符串

遍歷切片

  • 遍歷列表的部分元素搀菩,可在for 循環(huán)中使用切片
>>> players = ['charles', 'martina', 'michael', 'florence', 'eli']
>>> for player in players[:3]:
     print(player.title())

Charles
Martina
Michael

復(fù)制列表

  • 要復(fù)制列表呕臂,可創(chuàng)建一個(gè)包含整個(gè)列表的切片,方法是同時(shí)省略起始索引和終止索引([:] 秕磷。這讓Python創(chuàng)建一個(gè)始于第一個(gè)元素诵闭,終止于最后一個(gè)元素的切片,即復(fù)制整個(gè) 列表澎嚣。

元組(tuple)——(‘name’,“l(fā)ife”,2,3)

列表是可以修改的疏尿,而不可變的列表被稱為元組

定義元組

  • 元組看起來(lái)猶如列表,卻是使用圓括號(hào)而不是方括號(hào)來(lái)標(biāo)識(shí)易桃。
  • 定義元組后褥琐,就可以使用索引來(lái)訪問(wèn)其元素,就像訪問(wèn)列表元素一樣
  • 像列表一樣晤郑,也可以使用for 循環(huán)來(lái)遍歷元組中的所有值
  • 雖然不能修改元組的元素敌呈,但可以給存儲(chǔ)元組的變量賦值。因此造寝,如果要修改前述矩形的尺寸磕洪,可重新定義整個(gè)元組
>>> dimensions = (200, 50)
>>> for dimension in dimensions:
    print(dimension)

200
50
>>> dimensions = (400, 100) # 重新定義一個(gè)新的元組
>>> for dimension in dimensions:
    print(dimension)

400
100
  • 如果需要存儲(chǔ)的一組值在程序的整個(gè)生命周期內(nèi)都不變,可使用元組诫龙。

if 語(yǔ)句

條件測(cè)試

每條if 語(yǔ)句的核心都是一個(gè)值為TrueFalse 的表達(dá)式析显,這種表達(dá)式被稱為條件測(cè)試

  • 相等運(yùn)算符 (==)

檢查相等時(shí)無(wú)需考慮大小寫(xiě)

  • 不相等運(yùn)算符 (!=)

條件語(yǔ)句中可包含各種數(shù)學(xué)比較,如小于签赃、小于等于谷异、大于、大于锦聊。

檢查多個(gè)條件

  • 需要在兩個(gè)條件都為T(mén)rue 時(shí)才執(zhí)行相應(yīng)的操作:可使用關(guān)鍵字and 將兩個(gè)條件測(cè)試合而為一歹嘹;如果每個(gè)測(cè)試都通過(guò)了,整個(gè)表達(dá)式就為True 孔庭;如果有一個(gè)測(cè)試沒(méi)有通過(guò)尺上,整個(gè)表達(dá)式就 為False
>>> age_0 = 22
>>> age_1 = 18

>>> (age_0>= 21) and (age_1>=21)
False

>>> (age_0>= 21) and (age_1>=10)
True
  • 而有時(shí)候只要求一個(gè)條件為T(mén)rue 時(shí)就執(zhí)行相應(yīng)的操作:關(guān)鍵字or 也能夠讓你檢查多個(gè)條件,但只要至少需要一個(gè)條件滿足尖昏,就能通過(guò)整個(gè)測(cè)試仰税。僅當(dāng)兩個(gè)測(cè)試都沒(méi)有通過(guò)時(shí),才為False
>>> age_0 = 22
>>> age_1 = 18

>>> (age_0 >= 21) or (age_1 >= 21)  
True                                # 僅一個(gè)條件滿足

>>> age_0 = 18
>>> (age_0 >= 21) or (age_1 >= 21) 
False                               # 兩個(gè)都不滿足

檢查特定值是否包含在列表中

  • 要判斷特定的值是否已包含在列表中抽诉,可使用關(guān)鍵字in
>>> requested_toppings = ['mushrooms', 'onions', 'pineapple']

>>> 'mushrooms' in requested_toppings
True

>>> 'pepperoni' in requested_toppings
False
  • 確定特定的值未包含在列表中陨簇,可使用關(guān)鍵字not in

最簡(jiǎn)單的if 語(yǔ)句只有一個(gè)測(cè)試和一個(gè)操作

if-else語(yǔ)句

在條件測(cè)試通過(guò)了時(shí)執(zhí)行一個(gè)操作,并在沒(méi)有通過(guò)時(shí)執(zhí)行另一個(gè)操作迹淌。

  • if-elif-else結(jié)構(gòu)
  • 僅適合用于只有一個(gè)條件滿足的情況

檢查超過(guò)兩個(gè)條件的情況河绽,往往其中間條件是 由elif引導(dǎo)的

  • 可使用多個(gè) elif代碼塊

  • 當(dāng)然也可以省略 else代碼塊

如果你只想執(zhí)行一個(gè)代碼塊,就使用if-elif-else 結(jié)構(gòu)唉窃;如果要運(yùn)行多個(gè)代碼塊耙饰,就使用一系列獨(dú)立的if 語(yǔ)句。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纹份,一起剝皮案震驚了整個(gè)濱河市苟跪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蔓涧,老刑警劉巖件已,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異元暴,居然都是意外死亡篷扩,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)茉盏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鉴未,“玉大人,你說(shuō)我怎么就攤上這事鸠姨⊥眩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵讶迁,是天一觀的道長(zhǎng)连茧。 經(jīng)常有香客問(wèn)我,道長(zhǎng)添瓷,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任值纱,我火速辦了婚禮鳞贷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘虐唠。我一直安慰自己搀愧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著咱筛,像睡著了一般搓幌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迅箩,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天溉愁,我揣著相機(jī)與錄音,去河邊找鬼饲趋。 笑死拐揭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奕塑。 我是一名探鬼主播堂污,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼龄砰!你這毒婦竟也來(lái)了盟猖?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤换棚,失蹤者是張志新(化名)和其女友劉穎式镐,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體圃泡,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碟案,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颇蜡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片价说。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖风秤,靈堂內(nèi)的尸體忽然破棺而出鳖目,到底是詐尸還是另有隱情,我是刑警寧澤缤弦,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布领迈,位于F島的核電站,受9級(jí)特大地震影響碍沐,放射性物質(zhì)發(fā)生泄漏狸捅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一累提、第九天 我趴在偏房一處隱蔽的房頂上張望尘喝。 院中可真熱鬧,春花似錦斋陪、人聲如沸朽褪。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缔赠。三九已至衍锚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嗤堰,已是汗流浹背戴质。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梁棠,地道東北人置森。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像符糊,于是被迫代替她去往敵國(guó)和親凫海。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355