2018-01-15 python學(xué)習(xí)第三天

字典:當(dāng)索引不好用時(shí)

字典是一種通過(guò)名字引用值的數(shù)據(jù)結(jié)構(gòu)挫以。這種結(jié)構(gòu)類型稱為映射鹤树。字典是Python中唯一內(nèi)建的映射類型齿税。

4.1 字典的使用

現(xiàn)實(shí)中的字典以及在Python中的字典都進(jìn)行了構(gòu)造,從而可以輕松查到某個(gè)特定的詞語(yǔ)(鍵)逞刷,從而找到它的定義(值)

某些情況冰木,字典比列表更適用:

[if !supportLists]①? [endif]征游戲棋盤(pán)的狀態(tài),每個(gè)鍵都是由坐標(biāo)值組成的元組

[if !supportLists]②? [endif]存儲(chǔ)文件修改次數(shù)浪慌,用文件名作為鍵冤荆;

[if !supportLists]③? [endif]數(shù)字電話/地址簿

教訓(xùn)就是:電話號(hào)碼(以及其它可能以0開(kāi)頭的數(shù)字)應(yīng)該表示為數(shù)字字符串,而不是整數(shù)权纤。

4.2 創(chuàng)建和使用字典

【代碼】

items = {'Alice':'2341','Beth':'9102','Ceil':'3258'}

print(items)

#字典由多個(gè)鍵值對(duì)組成钓简。每個(gè)鍵和它的值之間用冒號(hào)(:)分隔,項(xiàng)之間用逗號(hào)(汹想,)隔開(kāi)外邓,這個(gè)字典是由一對(duì)大括號(hào)括起來(lái)。鍵唯一古掏,而值不唯一

【結(jié)果】

{'Beth': '9102', 'Alice': '2341', 'Ceil': '3258'}

4.2.1 dict函數(shù)

【代碼】

#可以使用dict函數(shù)损话,通過(guò)其他映射(比如其他字典)或者(鍵,值)這樣的序列對(duì)建立字典items = [('name','Gumby'),('age','42')] #鍵值對(duì)被元素括起來(lái)d = dict(items)

print(d)

print(d['name'])

#dict函數(shù)也可以通過(guò)關(guān)鍵字參數(shù)來(lái)創(chuàng)建字典d = dict(name = 'Gumby',age = 42) #通過(guò)向函數(shù)傳入?yún)?shù)print(d)

#還能以映射作為dict函數(shù)的參數(shù)槽唾,以建立其項(xiàng)與映射相同的字典()

【結(jié)果】

{'name': 'Gumby', 'age': '42'}

Gumby

{'name': 'Gumby', 'age': 42}

4.2.2 基本字典操作

字典的基本行為在很多方面與序列(sequence)類似

len(d) 返回d中項(xiàng)(鍵-值對(duì))的數(shù)量

d[k] 返回關(guān)聯(lián)到鍵k上的值

d[k] = v 將值v關(guān)聯(lián)到鍵k上

del d[k] 刪除鍵為k的項(xiàng)

k in d 檢查d中是否含有鍵為k的項(xiàng)

字典和列表的區(qū)別:

鍵類型:字典的鍵不一定是整型數(shù)據(jù)丧枪,比如可能是浮點(diǎn)型、字符串或者元組

自動(dòng)添加:即使那個(gè)鍵起初在字典中不存在庞萍,也可以給它分配一個(gè)值拧烦,這樣字典就會(huì)建立新的項(xiàng)。而(在不使用append或者其他類似操作情況下)不能將值關(guān)聯(lián)到列表范圍之外的索引上挂绰。

成員資格:表達(dá)式 k in d (d為字典)查找的是鍵屎篱,而不是值服赎。表達(dá)式v in l (l為列表)則用來(lái)查找值葵蒂,而不是索引交播。

注:在字典中檢查鍵的成員資格比在列表中檢查值的成員資格效率高,數(shù)據(jù)結(jié)構(gòu)規(guī)模越大践付,效果越明顯秦士。

【代碼】

#鍵可以為任何不可變類型--是字典最強(qiáng)大的地方。x = {}

x[

42] = 'Foobar'

print(x)

x = []

x[

42] = 'Foobar'

【結(jié)果】

{42: 'Foobar'}

Traceback (most recent call last):

? File"D:/python_file/20180113/test.py", line 7, in

??? x[42] = 'Foobar'

IndexError: list assignment index out of range

字典示例:

【代碼】

#簡(jiǎn)單數(shù)據(jù)庫(kù)

#

使用人名作為鍵的字典永高,每個(gè)人用另一個(gè)字典來(lái)表示隧土,其鍵'phone'和'addr'分別表示他們的電話號(hào)碼和地址people = {


'Alice':{


'phone':'2341',


'addr':'Foo drive 23'

??? },


'Beth':{


'phone':'9102',


'addr':'Bar street 42'

??? },


'Cecil':{


'phone':'3158',


'addr':'Baz avenue 90'

??? }

}

#針對(duì)電話號(hào)碼和地址使用的描述性標(biāo)簽,會(huì)在打印輸出時(shí)用到labels = {


'phone':'phone_number',


'addr':'address'

}

name =

input('please

input name:')

#查找電話號(hào)碼還是地址命爬?使用正確的鍵request = input('please give me a

request:')

#使用正確的鍵if request == 'p': key

= 'phone'

if request == 'a': key

= 'addr'

#如果名字是字典中的有效鍵才打印信息:if name in people:


print("%s' s %s is %s." % (name,labels[key],people[name][key]))


【結(jié)果】

please input name:Beth

please give me a request:p

Beth' s phone_number is 9102.

4.2.3 字典的格式化字符串

【代碼】

#第三章中已經(jīng)使用了字符串格式化功能來(lái)格式化元組中的所有值曹傀。如果使用字典而不是元組來(lái)做這個(gè)工作,會(huì)使字符串格式化更酷一些饲宛。

#

在每個(gè)轉(zhuǎn)換說(shuō)明符中的%后面皆愉,可以加上(用圓括號(hào)括起來(lái)的)鍵,后面再跟上其他說(shuō)明元素艇抠。phonebook = {'Beth':'9102','Alice':'2341','Ceil':'3258'}

print("Ceil's

phone number is %(Ceil)s." % phonebook)

【結(jié)果】

Ceil's phone number is 3258.

【代碼】

template = '''


???????%(title)s


???????????

%(title)s

???????????

%(text)s



'''

data = {'title':'My Home Page','text':'Welcome

to my home page!'}

print(template% data)#也就是說(shuō)把 %(title)s 放在了字符串的內(nèi)部幕庐,到外部的時(shí)候,就不需要寫(xiě)這些東西了--》直接template % data

【結(jié)果】


???????My Home Page


???????????

My HomePage

???????????

Welcome to myhome page!



4.2.4 字典方法

就像其他內(nèi)建類型一樣家淤,字典也有方法异剥。這些方法非常有用,但是可能不會(huì)像使用列表或者字符串方法那樣頻繁使用絮重≡┦伲可以了解一下哪些方法可用,然后需要的時(shí)候再查看特定方法的具體用法青伤。

[if !supportLists]1.? [endif]clear

【代碼】

#clear方法清除字典中所有的項(xiàng)督怜。這是個(gè)原地操作,所有無(wú)返回值(或者說(shuō)返回None)d = {}

d[

'name'] = 'Gumby'

d['age'] = '42'

print(d)

returned_value = d.clear()

print(d)

print(returned_value)

【結(jié)果】

{'age': '42', 'name': 'Gumby'}

{}

None

【代碼】

#為什么這個(gè)方法有用呢潮模?x = {}

y = x

x[

'key'] = 'value'

print(y)

x = {}

print(y,'\n')

#然后是第二種情況:x = {}

y = x

x[

'key'] = 'value'

print(y)

x.clear()

print(y)

#可知亮蛔,兩種情況中,x和y最初對(duì)應(yīng)同一個(gè)字典擎厢。情況1中究流,通過(guò)將x關(guān)聯(lián)到一個(gè)新的空字典來(lái)“清空”它,這對(duì)y沒(méi)有影響动遭。但如果真的想清空原始字典中所有元素芬探,必須使用clear方法±宓耄可見(jiàn)偷仿,變量名相當(dāng)于指針哩簿,指向的內(nèi)容相當(dāng)于數(shù)據(jù),而clear()函數(shù)正是對(duì)數(shù)據(jù)進(jìn)行操作的酝静。

【結(jié)果】

{'key': 'value'}

{'key': 'value'}


{'key': 'value'}

{}

[if !supportLists]2.? [endif]copy

【代碼】

#copy方法返回一個(gè)具有相同鍵-值對(duì)的新字典(這個(gè)方法實(shí)現(xiàn)的是淺復(fù)制(shallow copy),因?yàn)橹当旧砭褪窍嗤慕诎瘢皇歉北荆?/i>x = {'username':'admin','machines':['foo','bar','baz']}

y = x.copy()

y[

'username'] = 'mlh'

#python2 中刪除操作使用y['machines'].remove('bar')

#

在python3 中刪除操作如下:del y['machines'][1]

print(y)

print(x)

#可以看到,在副本中替換值的時(shí)候别智,原始字典不受影響,但是宗苍,如果修改了(刪除)某個(gè)值,原始字典也會(huì)改變

#

即(副替換主不替換薄榛,副修(刪除讳窟,新增)則主修)

【結(jié)果】

{'username': 'mlh', 'machines': ['foo', 'baz']}

{'username': 'admin', 'machines': ['foo', 'baz']}

【代碼】

# 但是,如果修改了某個(gè)值(刪除或新增敞恋,而不是替換)丽啡,原始的字典也會(huì)改變,因?yàn)橥瑯拥闹荡鎯?chǔ)在原字典中

#

避免這種現(xiàn)象的方法就是使用深復(fù)制(deep copy),復(fù)制其包含的所有值硬猫〔构浚可以使用copy模塊的deepcopy來(lái)完成from copy import deepcopy

d = {}

d[

'names'] = ['Alfred','Bertrand']

c = d.copy()

dc = deepcopy(d)

d[

'names'].append(['Clive'])

print(c)

print(dc) #可以看出,新增操作對(duì)于深復(fù)制操作得到的字典沒(méi)有影響

【結(jié)果】

{'names': ['Alfred', 'Bertrand', ['Clive']]}

{'names': ['Alfred', 'Bertrand']}

[if !supportLists]3.? [endif]fromkeys

【代碼】

#fromkeys方法使用給定的鍵建立新的字典浦徊,每個(gè)鍵默認(rèn)對(duì)應(yīng)的值為Noneprint({}.fromkeys(['name','age']))

#首先構(gòu)造了一個(gè)空字典馏予,然后調(diào)用它的fromkeys方法,建立另外一個(gè)字典盔性。

#

上面的例子有些多余霞丧,也可以在所有字典的類型dict上面調(diào)用方法print(dict.fromkeys(['name','age']))

【結(jié)果】

{'age': None, 'name': None}

{'age': None, 'name': None}

[if !supportLists]4.? [endif]get

【代碼】

#get方法是個(gè)更寬松的訪問(wèn)字典項(xiàng)的方法。一般來(lái)說(shuō)冕香,如果試圖訪問(wèn)字典中不存在的項(xiàng)時(shí)會(huì)出錯(cuò),而用get不會(huì)d = {}

print(d.get('name'))

# print(d['name'])

#還可以自己定義“默認(rèn)”值蛹尝,替換Noneprint(d.get('name','N/A'))

#如果鍵存在,get用起來(lái)就像普通的字典查詢一樣d['name'] = 'Eric'

print(d.get('name'))

【結(jié)果】

None

N/A

Eric

【代碼】

#使用get()的簡(jiǎn)單數(shù)據(jù)庫(kù)

#

這里添加代碼清單4-1中插入數(shù)據(jù)庫(kù)的代碼people = {


'Alice':{


'phone':'2341',


'addr':'Foo drive 23'

??? },


'Beth':{


'phone':'9102',


'addr':'Bar street 42'

??? },


'Cecil':{


'phone':'3158',


'addr':'Baz avenue 90'

??? }

}

labels = {

#用于顯示

??? 'phone':'phone_number',


'addr':'address'

}

name =

input("please

input a name:")

request =

input("please

input a request(p or a):") #查找電話號(hào)碼還是地址

#

使用正確的鍵key = request #如果請(qǐng)求既不是'p'悉尾,也不是'a'if request == 'p':

??? key =

'phone'

if request == 'a':

??? key =

'addr'

#使用get()提供默認(rèn)值person =

people.get(name,{}) #得到的person含有號(hào)碼和地址label =labels.get(key,key)

result = person.get(key,

'not

available')

print("%s's

%s is %s" %(name,label,result))

#可以看出get方法帶來(lái)的靈活性使得程序在用戶輸入我們并未準(zhǔn)備的值時(shí)也能做出合理的反應(yīng)突那。

【結(jié)果】

please input a name:Alice

please input a request(p or a):d

Alice's d is not available

[if !supportLists]5.? [endif]has_key

【代碼】

#has_key方法可以檢查字典中是否含有給出的鍵。表達(dá)式 d.has_key(k) 相當(dāng)于 k in d(python3中不包括這個(gè)函數(shù))d = {}

print('name' in d)

d[

'name'] = 'Eric'

print('name' in d)

【結(jié)果】

False

True

[if !supportLists]6.? [endif]items和iteritems

【代碼】

#items方法將所有字典項(xiàng)以列表方式返回构眯,這些列表項(xiàng)中每一項(xiàng)都來(lái)自于(鍵,值)愕难。但項(xiàng)在返回時(shí)沒(méi)有特殊的順序d = {'title':'Python

Web Site','url':'http://www.python.org','spam':0}

#在python3中,items()和viewitems()一致惫霸。print(d.items())

#iteritems方法的作用大致相同猫缭,但是會(huì)返回一個(gè)迭代器對(duì)象而不是列表

#

在python3中,items()替換iteritems()可以用于for來(lái)循環(huán)遍歷it = d.items()

print(it)

print(list(it))

#在很多情況下壹店,使用iteeritems更高效(尤其是想要迭代結(jié)果的時(shí)候)

【結(jié)果】

dict_items([('spam', 0), ('url', 'http://www.python.org'), ('title','Python Web Site')])

dict_items([('spam', 0), ('url', 'http://www.python.org'), ('title','Python Web Site')])

[('spam', 0), ('url', 'http://www.python.org'), ('title', 'Python WebSite')]

[if !supportLists]7.? [endif]keys和iterkeys

keys方法將字典中的鍵以列表形式返回猜丹,而iterkeys則返回針對(duì)鍵的迭代器

[if !supportLists]8.? [endif]pop

【代碼】

#pop方法用來(lái)獲得對(duì)應(yīng)于給定鍵的值,然后將這個(gè)鍵-值對(duì)從字典中移除d = {'x':1,'y':2}

d.pop(

'x')

print(d)

【結(jié)果】

{'y': 2}

[if !supportLists]9.? [endif]popitem

【代碼】

#popitem方法類似于list.pop,后者會(huì)彈出列表的最后一個(gè)元素硅卢。但不同的是射窒,popitem彈出隨機(jī)的項(xiàng)藏杖,因?yàn)樽值洳](méi)有“最后的元素”或者其他有關(guān)順序的概念d = {'url':'http://www.python.org','spam':0,'title':'python

web site'}

print(d)

print(d.popitem())

print(d)

#盡管popitem和列表的pop方法很類似,但字典中沒(méi)有與append等價(jià)的方法脉顿。因?yàn)樽值錈o(wú)序蝌麸。

【結(jié)果】

{'url': 'http://www.python.org', 'spam': 0, 'title': 'python web site'}

('url', 'http://www.python.org')

{'spam': 0, 'title': 'python web site'}

[if !supportLists]10.[endif]setdefault

【代碼】

#setdefault方法在某種程度上類似于get方法,就是能夠獲得與給定鍵相關(guān)聯(lián)的值弊予,除此之外祥楣,setdefault還能在字典中不含有給定鍵的情況下設(shè)定相應(yīng)的鍵值d = {}

d.setdefault(

'name','N/A')

print(d)

d[

'name'] = 'Gumby'

d.setdefault('name','N/A')

print(d)

【結(jié)果】

{'name': 'N/A'}

{'name': 'Gumby'}

[if !supportLists]11.[endif]update

【代碼】

#update方法可以利用一個(gè)字典項(xiàng)更新另一個(gè)字典d = {


'title':'Python Web Site',


'url':'http://www.python.org',


'changed':'Mar 14 22:09:15 MET2008'

}

x = {

'title':'Python

Language Website'}

d.update(x)

print(d)

#update方法可以使用與調(diào)用dict函數(shù)同樣的方式進(jìn)行調(diào)用开财,這就意味著update可以和映射汉柒、擁有(鍵、值)對(duì)的隊(duì)列(或者其他可迭代對(duì)象)以及關(guān)鍵字參數(shù)一起調(diào)用

【結(jié)果】

{'title': 'Python Language Website', 'url': 'http://www.python.org','changed': 'Mar 14 22:09:15 MET 2008'}

[if !supportLists]12.[endif]values和itervalues

【代碼】

#values方法以列表的形式返回字典中的值(itervalues返回值的迭代器)责鳍。與返回鍵的列表不同的是碾褂,返回值的列表中可以包含重復(fù)的元素d = {}

d[

1] = 1

d[2] = 2

d[3] = 3

d[4] = 4

print(d.values())

【結(jié)果】

dict_values([1, 2, 3, 4])


映射:映射可以使用任何不可變對(duì)象表示元素。最常用的類型是字符串和元組历葛。Python內(nèi)建的映射類型是字典正塌。

利用字典格式化參數(shù):可以通過(guò)在格式化說(shuō)明符中包括名稱(鍵)來(lái)對(duì)字典應(yīng)用字符串格式化操作。當(dāng)在字符格式化中使用元組時(shí)恤溶,還需要對(duì)元組中每一個(gè)元素都設(shè)定“格式化說(shuō)明符”乓诽。

字典的方法:字典有很多方法,調(diào)用的方式和調(diào)用列表以及字符串方法的方式相同咒程。

第五章 條件鸠天、循環(huán)和其他語(yǔ)句

下面將深入學(xué)習(xí)條件語(yǔ)句和循環(huán)語(yǔ)句。還有幾種基本語(yǔ)句更多的使用方法帐姻。隨后會(huì)學(xué)習(xí)列表推導(dǎo)式(list comprehension)如何扮演循環(huán)和條件語(yǔ)句的角色—盡管它本身是表達(dá)式稠集。最后學(xué)習(xí)pass、del和exec語(yǔ)法的用法饥瓷。

5.1 print和import的更多信息

對(duì)于很多應(yīng)用程序來(lái)說(shuō)剥纷,使用logging模塊記日志比print語(yǔ)句更合適。

5.1.1 使用逗號(hào)輸出

【代碼】

print((1,2,3)) #會(huì)打印元組print(1,2,3) #不會(huì)打印元組print('hello'+',','world') #如果希望在hello后緊接著打印逗號(hào)呢铆,可以使用+的方式

【結(jié)果】

(1, 2, 3)

1 2 3

hello, world

5.1.2 把某件事作為另一件事導(dǎo)入

import somemodule

from somemodule import somefunction

from somemodule import somefunction,anotherfunction,yetanotherfunction

from somemodule import *

只有確定自己想要從給定的模塊導(dǎo)入所有功能時(shí)晦鞋,才應(yīng)該使用最后一個(gè)版本。但如果兩個(gè)模塊都有open函數(shù)棺克,只需使用第一種方式導(dǎo)入悠垛,然后向下面這樣使用函數(shù):

module1.open(…)

module2.open(…)

但還有另外的選擇:可以在語(yǔ)句末尾增加一個(gè)as語(yǔ)句,在該語(yǔ)句后給出名字逆航,或?yàn)檎麄€(gè)模塊提供別名:

import math as foobar

foobar.sqrt(4)

也可以為函數(shù)提供別名:

from math import sqrt as foobar

foobar(4)

對(duì)于open函數(shù)鼎文,可以像下面這樣使用:

from module1 import open as open1

from module2 import open as open2

5.2 賦值魔法

就算是不起眼的賦值語(yǔ)句,也有一些特殊的技巧

5.2.1 序列解包

【代碼】

#多個(gè)賦值操作可以同時(shí)進(jìn)行x,y,z = 1,2,3

print('--1:',x,y,z)

#很有用吧因俐,用它交換兩個(gè)(或更多個(gè))變量也是沒(méi)問(wèn)題的x,y = y,x

print('--2:',x,y,z)

#事實(shí)上拇惋,這就是序列解包周偎,或可迭代解包----將多個(gè)值的序列解開(kāi),然后放到變量的序列中撑帖。values = 1,2,3

print('--3:',values)

x,y,z = values

print('--4:',x)

#當(dāng)函數(shù)或者方法返回元組蓉坎,(或者其他序列或可迭代對(duì)象)時(shí),這個(gè)特性尤其有用胡嘿。假設(shè)需要獲闰劝(和刪除)字典中任意的項(xiàng)(鍵-值對(duì)),可以使用popitem方法衷敌,該方法將項(xiàng)作為元組返回勿侯。那么這個(gè)元組就可以直接賦值到兩個(gè)變量中:scoundrel = {'name':'Robin','girlfriend':'Marian'}

key,value = scoundrel.popitem()

print('--5:',key,value)

#注:python3中有另外一個(gè)解包的特性:可以像在函數(shù)的參數(shù)列表中一樣使用星號(hào)運(yùn)算符

【結(jié)果】

--1: 1 2 3

--2: 2 1 3

--3: (1, 2, 3)

--4: 1

--5: name Robin

5.2.2 鏈?zhǔn)劫x值

【代碼】

#鏈?zhǔn)劫x值是將同一個(gè)值賦給多個(gè)變量的捷徑,不過(guò)這里只處理一個(gè)值def foo():


return 1

x = y = foo()

#和下面兩條語(yǔ)句等價(jià)y = foo()

x = y

#注意與下面的語(yǔ)句不一定等價(jià)x = foo()

y = foo()

【結(jié)果】

無(wú)

5.2.3 增量賦值

【代碼】

x = 2

x += 1

x *= 2

print(x)

#對(duì)于其他類型也適用(只要二元運(yùn)算符本身適用于這些數(shù)據(jù)結(jié)構(gòu)類型即可)fnord = 'foo'

fnord += 'bar'

fnord *= 2

print(fnord)

#注:增量賦值可以讓代碼更加緊湊和簡(jiǎn)練缴罗,很多情況下易讀

【結(jié)果】

6

foobarfoobar

5.3 語(yǔ)句塊:縮排的樂(lè)趣

#語(yǔ)句塊并非一種語(yǔ)句助琐,而是……

#

語(yǔ)句塊是在條件為真(條件語(yǔ)句)時(shí)執(zhí)行或者執(zhí)行多次(循環(huán)語(yǔ)句)的一組語(yǔ)句。在代碼前放置空格來(lái)縮進(jìn)語(yǔ)句即可創(chuàng)建語(yǔ)句塊

#

在python中面氓,冒號(hào)(:)用來(lái)標(biāo)識(shí)語(yǔ)句塊的開(kāi)始兵钮,塊中每一個(gè)語(yǔ)句都是縮進(jìn)的(縮進(jìn)量相同)。當(dāng)回退到和已經(jīng)閉合的塊一樣的縮進(jìn)量時(shí)舌界,就表示當(dāng)前塊已經(jīng)結(jié)束了掘譬。

5.4 條件和條件語(yǔ)句

這里會(huì)學(xué)習(xí)讓程序是否執(zhí)行語(yǔ)句塊的方法。

5.4.1 布爾變量的作用

下面的值在作為布爾表達(dá)式的時(shí)候呻拌,會(huì)被解釋器看做假(false)

False? None?? 0?? “”?? ()? []? {}

也就是說(shuō)葱轩,Python中的所有值都能被解釋為真值

【代碼】

print(True)

print(False)

print(True == 1)

print(False == 0)

print(True + False + 42)

#布爾值True和False屬于布爾類型,bool函數(shù)可以用來(lái)轉(zhuǎn)換其他值(和list柏锄、str以及tuple一樣)轉(zhuǎn)換其他值print(bool('I

think,therefore I am'))

print(bool(42))

print(bool(''))

print(bool(0))

#注:盡管[]和""都是假值(也就是說(shuō)bool([])==bool("")==False)酿箭,它們本身卻不相等(也就是說(shuō)[]!=""),對(duì)于其他價(jià)值對(duì)象也是如此

【結(jié)果】

True

False

True

True

43

True

True

False

False

5.4.2 條件執(zhí)行和if語(yǔ)句

if子句

5.4.3 else子句

else子句

5.4.4 elif子句

elif子句

5.4.5 嵌套代碼塊

嵌套代碼塊

5.4.6 更復(fù)雜的條件

1.比較運(yùn)算符

表達(dá)式描述

x == yx等于y

x < yx小于y

x > yx大于y

x >= yx大于等于y

x <= yx小于等于y

x != yx不等于y

x is yx和y是同一個(gè)對(duì)象

x is not yx和y是不同的對(duì)象

x in yx是y容器(例如,序列)的成員

x not in yx不是y容器(例如趾娃,序列)的成員

檢查一個(gè)整型是否比一個(gè)字符串小缭嫡,看起來(lái)也是毫無(wú)意義的。但奇怪的是抬闷,在Python3.0之前的版本中這確實(shí)可以的妇蛀。我們應(yīng)當(dāng)對(duì)這種比較敬而遠(yuǎn)之,因?yàn)榻Y(jié)果完全不可靠笤成。在Python3.0中评架,比較不兼容類型的對(duì)象已經(jīng)不再可行。

在Python中比較運(yùn)算符和賦值運(yùn)算符一樣是可以連接的----幾個(gè)運(yùn)算符可以連在一起使用炕泳,比如:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纵诞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子培遵,更是在濱河造成了極大的恐慌浙芙,老刑警劉巖登刺,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異嗡呼,居然都是意外死亡纸俭,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)南窗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)揍很,“玉大人,你說(shuō)我怎么就攤上這事万伤≈匣冢” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵壕翩,是天一觀的道長(zhǎng)蛉迹。 經(jīng)常有香客問(wèn)我,道長(zhǎng)放妈,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任荐操,我火速辦了婚禮芜抒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘托启。我一直安慰自己宅倒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布屯耸。 她就那樣靜靜地躺著拐迁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疗绣。 梳的紋絲不亂的頭發(fā)上线召,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音多矮,去河邊找鬼缓淹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛塔逃,可吹牛的內(nèi)容都是我干的讯壶。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼湾盗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼伏蚊!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起格粪,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤躏吊,失蹤者是張志新(化名)和其女友劉穎肺孵,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體颜阐,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡平窘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凳怨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瑰艘。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖肤舞,靈堂內(nèi)的尸體忽然破棺而出紫新,到底是詐尸還是另有隱情,我是刑警寧澤李剖,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布芒率,位于F島的核電站,受9級(jí)特大地震影響篙顺,放射性物質(zhì)發(fā)生泄漏偶芍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一德玫、第九天 我趴在偏房一處隱蔽的房頂上張望匪蟀。 院中可真熱鬧,春花似錦宰僧、人聲如沸材彪。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)段化。三九已至,卻和暖如春造成,著一層夾襖步出監(jiān)牢的瞬間显熏,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工谜疤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留佃延,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓夷磕,卻偏偏與公主長(zhǎng)得像履肃,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子坐桩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355