=或<來確定幾個字符串的排列順序。從官方文檔上看Theoperators``is``and``isnot``t" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python中字符串比較使用is、==和cmp()總結

系統 1747 0

經常寫 shell 腳本知道,字符串判斷可以用 =,!= 數字的判斷是 -eq,-ne 等,但是 Python 確不是這樣子的。

所以作為慢慢要轉換到用 Python 寫腳本,這些基本的東西必須要掌握到骨子里!

在 Python 中比較字符串最好是使用簡單邏輯操作符。

例如,確定一個字符串是否和另外一個字符串匹配。正確的,你可以使用 is equal 或 == 操作符。你也可以使用例如 >= 或 < 來確定幾個字符串的排列順序。

從官方文檔上看

            
The operators ``is`` and ``is not`` test for object identity: ``x is
y`` is true if and only if *x* and *y* are the same object. ``x is
not y`` yields the inverse truth value.
 
cmp(...)
 cmp(x, y) -> integer
 
 Return negative if x
            
              y.
            
          

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

python is 主要是判斷 2 個變量是否引用的是同一個對象,如果是的話,則返回 true,否則返回 false。
判斷數字相等不要用 is 操作符

            
>>> 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 地址 字符串是否相同。

            
#!/usr/bin/python
 
strtmp = '192.169.1.161'
file_object = open(r'public_ip.txt')
try:
 all_the_text = file_object.readlines()
 firstline = all_the_text[0].rstrip()
finally:
 file_object.close()
 
#print firstline
 
#if strtmp == firstline:
s = (strtmp is firstline)
print s
if (strtmp is firstline):
 print 'yes'
else:
 print 'no'

          

來個簡單點的例子:

            
#-*-conding:utf-8-*-
i='xinwen';
m=input();
if i==m:
 print('yes');
else:
 print('no');
 
input();

          

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

            
#!/usr/bin/python
# Filename: if.py
 
number = 23
guess = 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 here
elif 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

          

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

            
>>> x='a'
>>> x+'b' is 'ab'
False
>>> x+'b' == 'ab'
True
>>> cmp(x+'b','ab')
0
>>> id(x+'b')
32468384L
>>> id('ab')
46933696L
>>>

          

注意:

            
>>> a='abc'
>>> b='abc'
>>> a is b
True
>>> id(a) == id(b)
True
>>>
          

可以看出內容相同的字符串實際上是同一個對象(Java 中直接賦值的字符串也可用 == 來判斷,但是使用 new 實例化的對象則需要使用equals(String s) 來判斷)。

以上幾個例子大家應該可以明白在python中字符串比較使用is、==和cmp()的方法了


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 鹿泉市| 毕节市| 丹江口市| 吴旗县| 鹤壁市| 永平县| 江安县| 靖宇县| 敖汉旗| 沙坪坝区| 北川| 宁明县| 蒙城县| 徐州市| 泽库县| 武穴市| 扎鲁特旗| 洪洞县| 合肥市| 鄂温| 神木县| 秭归县| 阿巴嘎旗| 三门县| 天门市| 兴业县| 丘北县| 新巴尔虎左旗| 肥西县| 太原市| 乌什县| 沁水县| 大宁县| 康乐县| 伽师县| 汝阳县| 北宁市| 陆河县| 石首市| 大荔县| 虎林市|