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

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

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

瀏覽:15日期: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久久,三上悠亚国产精品一区二区三区
国产精品免费精品自在线观看| 免费人成精品欧美精品| 欧美日韩亚洲国产精品| 欧美交a欧美精品喷水| 久久狠狠久久| 亚洲精品一二三**| 亚洲视频国产| 中文字幕亚洲影视| 青青草伊人久久| 日韩理论视频| 不卡视频在线| 视频精品一区二区| 欧美 日韩 国产一区二区在线视频| 国产拍在线视频| 久久精品伊人| 国产精品mv在线观看| 99精品视频在线| 国产亚洲高清视频| 91精品日本| 国产一区二区三区免费在线| 美女视频一区在线观看| 国产精品成人3p一区二区三区| 久久免费福利| 国产在线日韩| 日本成人手机在线| 日本成人在线一区| 国产综合激情| 国产一区2区| 久久精品国产一区二区| 国产极品嫩模在线观看91精品| 久久国产欧美日韩精品| 成人一区而且| 91精品一区二区三区综合| 日韩中文字幕高清在线观看| 久久久影院免费| 在线亚洲欧美| 日本精品久久| 精品一区二区三区中文字幕视频| 92国产精品| 午夜av一区| 日韩高清欧美激情| 国产视频网站一区二区三区| 久久wwww| 麻豆一区在线| 欧美成人精品| 久久国产99| 国产欧美一区二区精品久久久| 高清av一区| 亚洲婷婷在线| 日韩中出av| 成人精品高清在线视频| 亚洲综合婷婷| 久久男人av资源站| 久久亚洲二区| 老司机免费视频一区二区| 久久中文字幕一区二区| 伊人久久国产| 日本少妇一区二区| 桃色av一区二区| 亚洲精品美女91| 欧美亚洲三区| 久久中文字幕二区| 91精品国产自产在线丝袜啪| 女人av一区| 欧美精品97| 午夜宅男久久久| 成人午夜在线| 无码日韩精品一区二区免费| 久久久久久一区二区| 首页欧美精品中文字幕| 日本欧美国产| 亚洲人成网77777色在线播放 | 久久精品一本| 伊伊综合在线| 久久国产三级精品| 99国产精品久久久久久久| 久久精品毛片| 日韩美女国产精品| 国产精品av久久久久久麻豆网| 国产精品久久久久久模特| 亚洲精品1区| 欧美xxxx中国| 亚洲精品高潮| 欧美一区久久久| 久久国产三级精品| 亚洲主播在线| 激情国产在线| 国产精品v一区二区三区| 欧美成a人免费观看久久| 国产探花在线精品| 六月天综合网| 日韩视频二区| 欧美男人天堂| 国产精品第十页| 中文字幕乱码亚洲无线精品一区| 91精品国产福利在线观看麻豆| 国产精品多人| 涩涩涩久久久成人精品| 国产女优一区| 国产91精品对白在线播放| 精品免费视频| 国产精品男女| 日本精品国产| 久久国产成人午夜av影院宅| 精品视频网站| 国产精品毛片久久久| 午夜电影一区| 亚洲永久精品唐人导航网址| 一区三区视频| 在线视频观看日韩| 91精品久久久久久久久久不卡| 福利一区和二区| 国产精品大片| 欧美激情日韩| 精品国产亚洲一区二区在线观看| 久久99久久人婷婷精品综合| 国产日韩欧美一区二区三区在线观看 | 99tv成人| 欧美香蕉视频| 久久精品动漫| 欧美精品高清| 久久久久蜜桃| 蜜臀久久99精品久久一区二区| 久久精选视频| 亚洲激精日韩激精欧美精品| 夜夜嗨一区二区三区| 国产视频一区三区| 免费高清在线一区| 亚洲最新av| 免费不卡在线观看| 欧美久久精品一级c片| 久久一区二区三区喷水| 快播电影网址老女人久久| 国产一区二区三区亚洲综合| 欧美国产专区| 成人污污视频| 精品欧美视频| 日韩国产91| 精品淫伦v久久水蜜桃| 国产成人精品三级高清久久91| 国产欧美三级| 日韩一区三区| 国产日本精品| 久久久久蜜桃| 亚洲乱亚洲高清| 日韩高清成人| 日韩精品成人| 亚洲免费毛片| 青青草91久久久久久久久| 久久国产电影| 欧美va天堂| 久久久久久久久99精品大| 欧美中文字幕一区二区| 久久久9色精品国产一区二区三区| 欧美成人综合| 一本一本久久| 国产日韩欧美一区二区三区| 国产精品自拍区| 国产精品二区不卡| 日韩免费在线| 天堂√中文最新版在线| 91tv亚洲精品香蕉国产一区| 久久99伊人| 国产精品宾馆| 日韩国产精品久久久久久亚洲| 国产欧美三级| 午夜电影一区| 97精品国产一区二区三区| 亚洲一级大片| 久久黄色影院| 在线日韩欧美| 国产精品色网| 少妇精品久久久一区二区三区| 免费观看在线综合| 91国内精品| 18国产精品| 午夜在线一区| 欧美日韩xxxx| av免费不卡国产观看| 视频一区视频二区中文| 亚洲不卡视频| 亚洲成a人片| 久久午夜视频| 国语精品一区| 蜜桃视频一区二区三区在线观看| 影音先锋久久精品| 精品午夜久久| 日韩中文字幕区一区有砖一区 | aⅴ色国产欧美| 国产精品任我爽爆在线播放 | 国产一级成人av| 欧美国产小视频| 综合激情一区| 中文字幕亚洲影视| 久久亚洲国产精品尤物| 99精品网站| 深夜福利一区| 久久精品影视| 国产美女视频一区二区| 91精品xxx在线观看|