日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python 如何比較字符串是否一樣

瀏覽:18日期:2022-06-17 16:29:51

在python中,判斷兩個變量是否相等或一樣,可以使用==或者is來判斷;判斷不一樣可以使用 is not。

示例

python 如何比較字符串是否一樣

使用注意事項1.有時候兩個字符串打印出來看著一樣,但是判斷卻是False?

如果兩個字符串末尾有其他符號,比如回車‘n’,print的時候無法發現的,所以需要strip:

a=a.strip()b=b.strip()if a==b:print 'True'2.有時候==判斷是 True ,is 判斷卻是 False?

這是因為兩個字符串來自不同的內存塊,內存地址不一樣

id() 函數用于獲取對象的內存地址。

(ob1 is ob2) 等價于 (id(ob1) == id(ob2)) id函數可以獲得對象的內存地址,如果兩個對象的內存地址是一樣的,那么這兩個對象肯定是一個對象。和is是等價的.

python 如何比較字符串是否一樣

3.還有一種情況是兩個對象用is判斷是False,用id判斷卻是True。

原理比較復雜,如下:

In [1]: def bar(self, x):...: return self.x + y...: In [2]: class Foo(object):...: x = 9...: def __init__(self ,x):...: self.x = x...: bar = bar...: In [3]: foo = Foo(5)In [4]: foo.bar is Foo.barOut[4]: FalseIn [5]: id(foo.bar) == id(Foo.bar)Out[5]: True

真實情況是當執行.操作符的時候,實際是生成了一個proxy對象,foo.bar is Foo.bar的時候,兩個對象順序生成,放在棧里相比較,由于地址不同肯定是False,但是id(foo.bar) ==id(Foo.bar)的時候就不同了,首先生成foo.bar,然后計算foo.bar的地址,計算完之后foo.bar的地址之后,就沒有任何對象指向foo.bar了,所以foo.bar對象就會被釋放。然后生成Foo.bar對象,由于foo.bar和Foo.bar所占用的內存大小是一樣的,所以又恰好重用了原先foo.bar的內存地址,所以id(foo.bar) == id(Foo.bar)的結果是True。

下面內容由郵件Leo Jay大牛提供,他解釋的更加通透。

用id(expression a) == id(expression b)來判斷兩個表達式的結果是不是同一個對象的想法是有問題的。

foo.bar 這種形式叫 attribute reference [1],它是表達式的一種。foo是一個instance object,bar是一個方法,這個時候表達式foo.bar返回的結果叫method object [2]。

根據文檔:

When an instance attribute is referenced that isn’t a data attribute, its class is searched. If the name denotes a valid class attribute that is a function object, a method object is created by packing (pointers to) the instance object and the function object just found together in an abstract object: this is the method object.

foo.bar本身并不是簡單的名字,而是表達式的計算結果,是一個 method object,在id(foo.bar)這樣的表達式里,method object只是一個臨時的中間變量而已,對臨時的中間變量做id是沒有意義的。

一個更明顯的例子是,

print id(foo.bar) == id(foo.__init__) 輸出的結果也是True

看 id 的文檔[3]:

Return the “identity” of an object. This is an integer (or long integer) which is guaranteed to be unique and constant for this object during its lifetime. Two objects with non-overlapping lifetimes may have the same id() value. CPython implementation detail: This is the address of the object in memory.

只有你能保證對象不會被銷毀的前提下,你才能用 id 來比較兩個對象。所以,如果你非要比的話,得這樣寫:

fb = foo.bar Fb = Foo.bar print id(fb) == id(Fb)

即把兩個表達式的結果綁定到名字上,再來比是不是同一個對象,你才能得到正確的結果。

is表達式 [4] 也是一樣的,你現在得到了正確的結果,完全是因為 CPython 現在的實現細節決定的。

現在的is的實現,是左右兩邊的對象都計算出來,然后再比較這兩個對象的地址是否一樣。

萬一哪天改成了,先算左邊,保存地址,把左邊釋放掉,再算右邊,再比較的話,你的is的結果可能就錯了。

官方文檔里也提到了這個問題 [5]。

我認為正確的方法也是像id那樣,先把左右兩邊都計算下來,并顯式綁定到各自的名字上,然后再用is判斷。

python字符串判斷相等總結判斷字符串相等使用==,不使用is和cmp()函數

cmp() 函數則是相當于 <,==,> 但是在 Python3 中,cmp() 函數被移除了,所以我以后還是避免少用這個函數。

#-*-conding:utf-8-*-i=’新聞’;m=input();if i==m: print(’yes’);else: print(’no’); input();

if second_company_name == u’中外運長航’ or second_company_name == u’長航集團’:print(u’忽略中外運長航和長航集團的子公司’)continue

在 if 判斷語句中非常有用吶!

#!/usr/bin/python# Filename: if.py number = 23guess = int(raw_input(’Enter an integer : ’)) if guess == number: print ’Congratulations, you guessed it.’ # New block starts here print '(but you do not win any prizes!)' # New block ends hereelif guess < number: print ’No, it is a little higher than that’ # Another block # You can do whatever you want in a block ...else: print ’No, it is a little lower than that’ # you must have guess > number to reach here print ’Done’# This last statement is always executed, after the if statement is executed```## strip 去掉字符串其他符號str1 = str1.strip() #去掉字符串中其他符號包括換行符等等str2 = str2.strip()if str2 == str1: ... #自己的代碼## == 與 is的區別

python中,使用==來比較兩個**對象的值**是否相等,而java 則使用== 比較兩個**對象**是否是同一對象

譬如,java中比較字符串,一般使用equal 方法,來比較兩個對象的值是否相等,而不使用==

相比較的,python 使用**is** 來比較兩個對象是否是同一對象。

is 用來判斷是否是同一個對象,is 是種很特殊的語法,你在其它的語言應該不會見到這樣的用法。

官方文檔解釋:

```pythonThe operators ``is`` and ``is not`` test for object identity: ``x isy`` is true if and only if *x* and *y* are the same object. ``x isnot y`` yields the inverse truth value. cmp(...) cmp(x, y) -> integer Return negative if x<y, zero if x==y, positive if x>y.注意:內容相同的字符串實際上是同一個對象

>>> a=’abc’>>> b=’abc’>>> a is bTrue>>> id(a) == id(b)True>>>>```(Java 中直接賦值的字符串也可用 == 來判斷,但是使用 new 實例化的對象則需要使用equals(String s) 來判斷)## 判斷數字相等不要用 is 操作符```python>>> a = 256>>> b = 256>>> id(a)9987148>>> id(b)9987148>>> a = 257>>> b = 257>>> id(a)11662816>>> id(b)11662828

為什么兩次 is 返回的是不同結果?不是應該都是 true 嗎?

因為 string pooling (或叫intern)。 is 相等代表兩個對象的 id 相同(從底層來看的話,可以看作引用同一塊內存區域)。 至于為什么 “ABC” 被 intern 了而 “a bc” 沒有,這是 Python 解析器實現決定的,可能會變。

== 用來判斷兩個對象的值是否相等(跟 Java 不同,Java 中 == 用來判斷是否是同一個對象)。

今天我用 == 來判斷兩個 IP 地址 字符串是否相同。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
中文字幕日韩亚洲| 首页国产欧美日韩丝袜| 国产一区调教| 日本欧美在线看| 欧美肉体xxxx裸体137大胆| 精品视频91| 美女在线视频一区| 国产精品www.| 国产精品入口久久| 亚洲免费成人av在线| 日韩不卡免费高清视频| 久久久91麻豆精品国产一区| 亚洲综合色婷婷在线观看| 伊人久久亚洲美女图片| 日韩在线综合| 亚洲黄色网址| 国产精品大片| 国产精品亚洲欧美一级在线| 日韩av中文字幕一区二区| 久久夜夜操妹子| 成人免费电影网址| 九九综合九九| 午夜在线播放视频欧美| 亚洲精品中文字幕乱码| 久久精品高清| 久久久久蜜桃| 欧美精品九九| 视频一区二区欧美| 亚洲精品少妇| 久久国产麻豆精品| 麻豆国产91在线播放| 国产一区二区三区久久| 日韩av有码| 日韩成人亚洲| 国内精品福利| 91国内精品| 久久国际精品| 亚洲aa在线| 日韩欧美在线精品| 日韩和欧美一区二区| 日本少妇精品亚洲第一区| 国产伦理久久久久久妇女| 中文字幕亚洲精品乱码| 在线一区电影| 亚洲a成人v| 久久精品国产久精国产爱| av一区在线| 伊人精品久久| 国产精品黄网站| 精品黄色一级片| 国产一区日韩一区| 免费看欧美美女黄的网站| 国产精品亚洲四区在线观看| 日韩电影在线视频| 丝袜国产日韩另类美女| 日精品一区二区三区| 国产精品综合色区在线观看| 国语对白精品一区二区| 欧美日韩视频网站| 亚洲成人免费| caoporn视频在线| 国产亚洲一区在线| 美女视频黄免费的久久| 精品成av人一区二区三区| 国内一区二区三区| 亚洲欧美日韩专区| 免费在线欧美黄色| 欧美a级片一区| 久久国产日韩欧美精品| 欧洲亚洲一区二区三区| 模特精品在线| 国产偷自视频区视频一区二区| 国产美女撒尿一区二区| 免费av一区| 国际精品欧美精品| 综合视频一区| 日韩大片免费观看| 男人的天堂亚洲一区| 高清一区二区三区av| 精品捆绑调教一区二区三区| 亚洲精品亚洲人成在线观看| 秋霞国产精品| 免费一级欧美片在线观看网站| 国产精品普通话对白| 激情黄产视频在线免费观看| 国产亚洲毛片在线| 日韩在线精品| 热久久久久久| 亚洲午夜国产成人| 日韩欧美精品综合| 久久精品伊人| 欧美精品国产| 免费一级欧美片在线观看网站| 日韩一区二区三区精品| 亚洲精品一级二级| 国产精品白丝av嫩草影院| 麻豆91精品| 亚洲午夜91| 日韩欧美二区| 久久午夜影院| 亚洲精品影视| 亚洲一区日韩| 欧美特黄一级| 国产一区丝袜| 欧美aⅴ一区二区三区视频| 综合亚洲自拍| 黑丝一区二区| 国产一区视频在线观看免费| 国产成人免费精品| 美女久久精品| 国产精品久久久久久久久久10秀 | 牛牛精品成人免费视频| 欧美激情网址| 亚洲美女久久精品| 日韩国产欧美在线播放| 99在线观看免费视频精品观看| 欧美日韩精品一区二区三区视频| 久久精品xxxxx| 精品三级久久久| 久久婷婷av| 亚洲久久一区| 国产精品第一国产精品| 国产一区二区三区久久| 精品国产成人| 久久亚洲国产| 午夜亚洲福利| 精品视频久久| 一区福利视频| 国产精品三级| 亚洲国产专区| 91午夜精品| 日韩天堂在线| 久久亚洲视频| 久久精品午夜| 欧美二区视频| 国产调教精品| 亚洲福利久久| 久久精品99久久久| 高清av不卡| 亚洲制服一区| 日韩精品第一区| 综合激情一区| 久久久久久色| 欧美好骚综合网| 视频在线观看一区二区三区| 国产美女视频一区二区| 国产精品毛片aⅴ一区二区三区| 综合一区二区三区| 久久精品免视看国产成人| 国产精品av一区二区| 日韩av不卡在线观看| 日韩不卡在线| 国产欧美日韩免费观看| 欧美xxxx中国| 亚洲欧美日本国产专区一区| 欧美黑人巨大videos精品| 亚洲免费高清| 国产精品伦理久久久久久| 亚洲性视频在线| av在线日韩| 国产精品欧美在线观看| 亚洲神马久久| 精品国产免费人成网站| 亚洲人成网站在线在线观看| 日本а中文在线天堂| 日韩国产在线观看| 91久久国产| 久久久久久网| 国产日产高清欧美一区二区三区| 精品捆绑调教一区二区三区| 国产一卡不卡| 麻豆精品91| 欧美日韩中文字幕一区二区三区| 国产激情精品一区二区三区| 亚洲深深色噜噜狠狠爱网站 | 国产传媒在线观看| 日韩精品五月天| 日韩视频久久| 成人欧美一区二区三区的电影| 97se亚洲| 国产精品88久久久久久| 久久久久久久欧美精品| 日韩高清电影免费| 美女国产精品| 久久精品不卡| 人在线成免费视频| 精品午夜久久| 国产精品片aa在线观看| 亚洲精品在线国产| 欧美中文日韩| 最新日韩av| 一区二区视频欧美| 欧美成人亚洲| 精品国产日韩欧美精品国产欧美日韩一区二区三区| 亚洲视频国产| 丝袜美腿成人在线| 亚洲精品国产偷自在线观看| 久久久久久黄| 久久美女精品| 久久精品99久久无色码中文字幕|