Python的in,is和id函數(shù)代碼實例
1. in 和 not in —— 判斷某個序列中是否存在某值
# in
aa = [1,2,3,'Cathy','太平洋']
if '大西洋' in aa:
print('yes')
else:
print('no') # no
# not in
if '大西洋' not in aa:
print('yes') # yes
else:
print('no')
#-------------------------------------------------------
# 判斷字符串是否存在某子串
if '馬來西亞' in '馬來西亞是一個太平洋國家':
print('of course') # 輸出 'of course'
# ------------------------------------------------------
if 0 in (0,1,2,3):
print('hhhh') #輸出 'hhhh'
if 0 in [0,1,2,3]:
print('kkkk') #輸出 'hhhh'
2. is 和 is not —— 判斷兩個標識符是不是指向同一個地址(同一個對象),類似于判斷 id(x) == id(y) —— 具體對于相同值的內(nèi)存管理
# 相同
bb = 234
cc = 234
if bb is cc:
print('bb is cc') #結(jié)果是 bb is cc
else:
print('bb is not cc')
print(id(bb)) # id()值一樣,因為python的優(yōu)化機制,相同的'數(shù)值'數(shù)據(jù)會使用同樣的內(nèi)存空間。
print(id(cc))
# 相同
bb = 'hhh'
cc = 'hhh'
if bb is cc:
print('bb is cc') #同樣也是因為python的自身機制,在某些'字符'位數(shù)下,相同字符串也會指向同一地址 ------ 有說20位的,與系統(tǒng)有關
else:
print('bb is not cc')# 相同,python的對象引用機制
bb = [1,2,3]
cc = bb
if bb is cc:
print('bb is cc') #結(jié)果是 bb is cc
else:
print('bb is not cc')
# 不相同
bb = [1,2,3]
cc = [1,2,3]
if bb is cc:
print('bb is cc')
else:
print('bb is not cc') #結(jié)果是 bb is not cc
print(id(bb)) # id()值不一樣
print(id(cc))
3. id() 函數(shù),獲取對象的內(nèi)存地址(不同電腦不一樣),例如:
bb = 'hhh'
cc = bb
if bb is cc:
print('bb is cc') #結(jié)果是 bb is cc
else:
print('bb is not cc')
print(id(bb)) # id()值一樣,均為 1680346901336
print(id(cc))
4. 可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型
不可變數(shù)據(jù)類型: 當該類型的變量值發(fā)生了改變,它對應的內(nèi)存地址也會發(fā)生改變。
可變數(shù)據(jù)類型 :當該類型的變量值發(fā)生了改變,它對應的內(nèi)存地址不發(fā)生改變。
這里的可變不可變,是指內(nèi)存中的值內(nèi)容(value)是否可以被改變。如果是不可變類型,在操作對象本身的時候,必須在內(nèi)存新申請一塊內(nèi)存(因為原內(nèi)存內(nèi)容是不可變的)。如果是可變類型,操作對象的時候,不需要再在其他地方申請內(nèi)存,只需要在此對象后面連續(xù)申請內(nèi)存,所以它的地址會保持不變,但該內(nèi)存區(qū)域大小會變化。
在python中:
int,string,float,tuple —— 屬于python的不可變類型
object、list、set —— 屬于python的可變類型
使用:可以使用內(nèi)建函數(shù)id()來確認對象的地址在兩次賦值前后是否發(fā)生了變化。
例如:分別對于數(shù)值和列表類型:
a = 1
print(id(a))
a = a+1 #a本身發(fā)生變化
print(id(a))
# 結(jié)果分別為:140732932812544 和 140732932812576,表示id值發(fā)生了變化
a = ['1']
print(id(a))
a.append('sss') #a本身發(fā)生變化
print(id(a))
print(a) # 輸出:['1', 'sss']
# 結(jié)果分別為:1680347029768 和 1680347029768,表示id值沒有變化
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
python用字典統(tǒng)計單詞或漢字詞個數(shù)示例
這篇文章主要介紹了python用字典統(tǒng)計單詞或漢字詞個數(shù)示例,需要的朋友可以參考下2014-04-04
python爬蟲開發(fā)之selenium模塊詳細使用方法與實例全解
這篇文章主要介紹了python爬蟲開發(fā)之selenium模塊詳細使用方法與實例全解,selenium模塊詳細在爬蟲開發(fā)中主要用來解決JavaScript渲染問題需要的朋友可以參考下2020-03-03
Python繪圖之自定義圖類型控件實現(xiàn)混合類型圖表
這篇文章主要為大家詳細介紹了Python如何新建繪圖類型控件,實現(xiàn)混合類型圖表,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2023-08-08
python數(shù)據(jù)可視化之matplotlib.pyplot基礎以及折線圖
不論是數(shù)據(jù)挖掘還是數(shù)據(jù)建模,都免不了數(shù)據(jù)可視化的問題,對于Python來說,Matplotlib是最著名的繪圖庫,它主要用于二維繪圖,這篇文章主要給大家介紹了關于python數(shù)據(jù)可視化之matplotlib.pyplot基礎以及折線圖的相關資料,需要的朋友可以參考下2021-07-07

