Python筆記7:循環(huán)技巧和控制語句

循環(huán)技巧

當(dāng)遍歷字典的時(shí)候驱还,可以同時(shí)使用items()方法檢索

>>> knights = {"galahad":"the pure","robinhood":"the brave","guan yu":"loyal"}
>>> for k,v in knights.items():
    print(k,v)

    
galahad the pure
robinhood the brave
guan yu loyal

當(dāng)遍歷序列的時(shí)候,index索引和相關(guān)值可以用enumerate()函數(shù)

>>> for i ,v in enumerate(list(zip(knights))):
    print(i,v)

0 ('galahad',)
1 ('robinhood',)
2 ('guan yu',)

# 普通列表
>>> for i,v in enumerate(["one","two","three"]):
    print(i,v)

0 one
1 two
2 three

同時(shí)遍歷多個(gè)以上的序列時(shí),可以用zip()函數(shù)配對

>>> list1 = ["zhangsan","lisi","wangwu"]
>>> list2 = ["yes","no","fuck,I am zhangsan"]

>>> for question,answer in zip(list1,list2):
    print("Are you {0}? {1}".format(question,answer))

    
Are you zhangsan? yes
Are you lisi? no
Are you wangwu? fuck,I am zhangsan

要對序列進(jìn)行反向循環(huán)胀莹,首先指定正向序列,然后調(diào)用reversed函數(shù)婚温。

>>> for num in reversed(range(0,30,6)):
    print(num)

    
24
18
12
6
0

# 普通list反轉(zhuǎn)
>>> nums = [1,2,3,4,5,6,7]
>>> for num in reversed(nums):
    print(num)

    
7
6
5
4
3
2
1

遍歷一個(gè)序列排序的順序描焰,用sorted()函數(shù),保持原列表的同時(shí)栅螟,還會返回一個(gè)新的排序列表荆秦。

# 先打亂nums list
>>> from random import shuffle
>>> shuffle(nums)
>>> nums
[2, 7, 3, 6, 1, 4, 5]

# 然后對其進(jìn)行排序循環(huán)
# 這里的排序僅對本次循環(huán)有效
>>> for num in sorted(nums):
    print(num)

1
2
3
4
5
6
7

# 原list不變
>>> nums
[2, 7, 3, 6, 1, 4, 5]

有時(shí)對列表進(jìn)行循環(huán)時(shí),改變列表很容易力图,但是創(chuàng)建一個(gè)新的列表通常也會更容易步绸,更安全。

>>> nums = nums + [2,8,2,0,11]
>>> nums
[2, 7, 3, 6, 1, 4, 5, 2, 8, 2, 0, 11]

>>> newnums = []
>>> for i in nums:
    if i != 2 and i in range(0,10):
        newnums.append(i)

        
>>> newnums
[7, 3, 6, 1, 4, 5, 8, 0]

深入條件控制

在Python中吃媒,與C不同瓤介,賦值不能發(fā)生在表達(dá)式中.

條件語句

whileif語句中,可以包含任何運(yùn)算符赘那,而不只是比較運(yùn)算符刑桑。

比較運(yùn)算符

  • innot in檢查一個(gè)值是否在序列中出現(xiàn)

  • isis not比較兩個(gè)對象是否完全相同的對象,這只在list之類的可變對象中生效。

  • 所有的比較運(yùn)算符都具有相同的優(yōu)先級募舟,比所有數(shù)字運(yùn)算符都要低祠斧。

  • 連續(xù)比較:a < b == c,檢驗(yàn)a是否小于b拱礁,且b = c

Boolean運(yùn)算符

  • 比較的時(shí)候也可以用Boolean運(yùn)算符and或者or琢锋,并且比較結(jié)果可以用not否定,他們的優(yōu)先級比比較運(yùn)算符低

  • not是最高優(yōu)先級呢灶,or是最低的吩蔑,所以A and not B or C相當(dāng)于(A and (not B)) or C,當(dāng)然填抬,也可以直接用圓括號表達(dá)烛芬,為了提高可讀性,個(gè)人建議還是用圓括號吧

  • andor也可以稱為斷路運(yùn)算符,相當(dāng)于java中的&&||赘娄。

  • 這些參數(shù)是從左到右進(jìn)行評估的

  • 可以將比較或其他布爾表達(dá)式的結(jié)果分配給變量仆潮。

# string1 是空字符串,所以string2賦值給test
>>> string1,string2,string3 = "","one","two"
>>> test = string1 or string2 or string3
>>> test
'one'

比較序列和其它類型

序列對象可以與具有相同序列類型的其他對象進(jìn)行比較遣臼。

比較使用字典順序排序:
首先比較前兩項(xiàng)性置,如果它們不同,就決定了比較的結(jié)果; 如果它們相等揍堰,則繼續(xù)比較鹏浅,直到兩個(gè)序列都耗盡為止。

如果要比較的兩個(gè)項(xiàng)目本身是同一類型的序列屏歹,則遞歸比較隐砸,如果兩個(gè)序列的所有項(xiàng)都比較相等,那么序列就被認(rèn)為是相等的蝙眶。

如果一個(gè)序列是另一個(gè)的初始子序列季希,那么較短的序列就是較小的序列。

將不同類型的對象與<>進(jìn)行比較是合法的幽纷,前提是對象具有適當(dāng)?shù)谋容^方法式塌。例如,混合數(shù)值類型是根據(jù)它們的數(shù)字值進(jìn)行比較的友浸,因此0 = 0.0峰尝,等等。否則收恢,解釋器將會拋出一個(gè)類型錯(cuò)誤異常TypeError境析,而不是提供任意的排序。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末派诬,一起剝皮案震驚了整個(gè)濱河市劳淆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌默赂,老刑警劉巖沛鸵,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異缆八,居然都是意外死亡曲掰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進(jìn)店門奈辰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栏妖,“玉大人,你說我怎么就攤上這事奖恰〉踔海” “怎么了宛裕?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長论泛。 經(jīng)常有香客問我揩尸,道長,這世上最難降的妖魔是什么屁奏? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任岩榆,我火速辦了婚禮,結(jié)果婚禮上坟瓢,老公的妹妹穿的比我還像新娘勇边。我一直安慰自己,他們只是感情好折联,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布粒褒。 她就那樣靜靜地躺著,像睡著了一般崭庸。 火紅的嫁衣襯著肌膚如雪怀浆。 梳的紋絲不亂的頭發(fā)上谊囚,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天怕享,我揣著相機(jī)與錄音,去河邊找鬼镰踏。 笑死函筋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奠伪。 我是一名探鬼主播跌帐,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼绊率!你這毒婦竟也來了谨敛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤滤否,失蹤者是張志新(化名)和其女友劉穎脸狸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體藐俺,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡炊甲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了欲芹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卿啡。...
    茶點(diǎn)故事閱讀 38,664評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖菱父,靈堂內(nèi)的尸體忽然破棺而出颈娜,到底是詐尸還是另有隱情剑逃,我是刑警寧澤,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布揭鳞,位于F島的核電站炕贵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏野崇。R本人自食惡果不足惜称开,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乓梨。 院中可真熱鬧鳖轰,春花似錦、人聲如沸扶镀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽臭觉。三九已至昆雀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蝠筑,已是汗流浹背狞膘。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留什乙,地道東北人挽封。 一個(gè)月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像臣镣,于是被迫代替她去往敵國和親辅愿。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評論 2 349

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理忆某,服務(wù)發(fā)現(xiàn)点待,斷路器,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法弃舒,類相關(guān)的語法癞埠,內(nèi)部類的語法,繼承相關(guān)的語法棒坏,異常的語法燕差,線程的語...
    子非魚_t_閱讀 31,598評論 18 399
  • 山上有匪人,匪人有頭子坝冕,十里八村都知道徒探,窮兇極惡的人總是名揚(yáng)天下,可匪頭子在做土匪之前是做什么的喂窟,沒人知道测暗,有人說...
    快熟閱讀 502評論 10 7
  • iOS 獲取版本信息之類的問題央串,整理一小部分 1:獲取bundle Id信息:[[NSBundle mainBun...
    最慢的是活著閱讀 465評論 0 0
  • 函數(shù)基本 1.總體說明 函數(shù)是對象,可以動態(tài)創(chuàng)建碗啄,可以擴(kuò)展质和,可作為參數(shù)和返回結(jié)果,可以擁有屬性和方法 函數(shù)提供作用...
    MELODY_DZG閱讀 237評論 0 0