strip()括號(hào)內(nèi)是指字符序列(單個(gè)字符的集合),也就是只要某個(gè)字符串的開(kāi)頭或結(jié)尾上的字符是屬于這個(gè)字符序列之內(nèi)的,就刪除掉。
成都創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)云岡,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):18982081108
例如 :
a="12221abc"
a.strip("12")
'abc'
a = '123abc'
a.strip('21')
'3abc'
a.strip('12')
'3abc'
#注意:‘21’與‘12’的結(jié)果是一樣的
你第二次輸入的字符序列中包含空格,自然就把空格也去掉了
刪除左邊的空白可以用lstrip()函數(shù),刪除右邊的可以用rstrip()函數(shù),刪除左右兩邊的可以用strip()函數(shù)。
下面是一個(gè)例子:
s=" string "
print("原串:==="+s+"===")
l=s.lstrip()
print("刪除左邊空白后:==="+l+"===")
r=s.rstrip()
print("刪除右邊空白后:==="+r+"===")
lr=s.strip()
print("刪除左右兩邊空白后:==="+lr+"===")
運(yùn)行結(jié)果截圖:
我要糾正推薦答案中的說(shuō)法!
del并不是用來(lái)“刪除引用指向的內(nèi)存空間”,python中的del和c++中的delete是完全兩個(gè)概念,不要誤人子弟。。
一般來(lái)講,del是用來(lái)刪除變量的引用的,例如a = 1; del a,這里a是對(duì)1這個(gè)值的引用(python中所有的變量都可視作引用),而del a就是刪除這一引用關(guān)系,也就是說(shuō),1不再被a這個(gè)變量引用了,同時(shí)a這個(gè)變量名也從變量表中剔除了。
如果還是不太清楚,我舉這個(gè)例子你就明白了:
a = object()
b = a
del a
print b
print a # 該句會(huì)報(bào)a未定義的異常
這段代碼中,a引用了一個(gè)新對(duì)象object(),而b=a使得b也引用了這個(gè)對(duì)象,a和b雖然是兩個(gè)變量,但它們引用的是同一個(gè)對(duì)象,有點(diǎn)類(lèi)似于c++中的兩個(gè)指針指向同一個(gè)對(duì)象。
而后面del a僅僅只是把a(bǔ)這個(gè)變量對(duì)object()的引用刪掉了,同時(shí)a的變量名也失效了,但并不表示object()這個(gè)對(duì)象被刪除了,它還在,并且b還引用著它呢。從后面print b能正常輸出就可以看出這一點(diǎn)。
python的內(nèi)存釋放采用的是引用計(jì)數(shù)機(jī)制,也就是當(dāng)一個(gè)對(duì)象沒(méi)有任何引用它的變量了,那么它就會(huì)自動(dòng)被釋放,無(wú)需人工干預(yù)。
此外,del對(duì)于不同的對(duì)象也會(huì)有不同的功能,這取決于對(duì)象本身對(duì)__del__系統(tǒng)方法的實(shí)現(xiàn)。例如一個(gè)列表a = [1,2,3],del a[0]表示將列表的首項(xiàng)刪除,此時(shí)a就變成[2,3]了。如果是自定義的對(duì)象,那del的功能更是可以定義成你想要的任何樣子,詳情請(qǐng)參考python幫助中的__del__詞條。
python filter內(nèi)建函數(shù)
filter函數(shù)是python內(nèi)建函數(shù),可以操作任何可迭代類(lèi)型,如list,tuple,string.
filter需要帶上一個(gè)函數(shù)function和一個(gè)可迭代序列作為參數(shù)。filter()將調(diào)用該function作用于每一個(gè)可迭代序列的元素,并返回一個(gè)由該function驗(yàn)證后返回值為true的元素組成新的可迭代序列,新序列的類(lèi)型保持與filter參數(shù)序列的類(lèi)型一致
2.filter與數(shù)字
下面用這個(gè)例子來(lái)說(shuō)明:
#建個(gè)數(shù)字列表
numbers?=?[1,5,9,8,4,6,3,7]
#定義一個(gè)過(guò)濾標(biāo)準(zhǔn),取小于5的數(shù)
def?lessThanFive(element):
return?element??5
print?filter(lessThanFive,?numbers)
輸出結(jié)果是列表:[1,4,3]
解說(shuō):此處的過(guò)濾函數(shù)lessThanFive必需帶入一個(gè)參數(shù)(filter()會(huì)調(diào)用lessThanFive,參數(shù)是列表nembers中的每一個(gè)元素,一次一個(gè))。filter()返回所有值都是小于5的列表
3.filter與字符串
下面用如下例子說(shuō)明:
#定義元組類(lèi)型
names?=?('Jack',?'Jill,?'Steve',?'')
#篩選出名字
new_names?=?filter(None,?names)
print?new_names
輸出結(jié)果是元組:
('Jack',?'Jill,?'Steve')
在元組names最后一個(gè)名字是空字符串,而filter的第一個(gè)參數(shù)是None,這說(shuō)明需要使用identity函數(shù)(該函數(shù)是簡(jiǎn)單的返回該元素的)
因?yàn)閜ython對(duì)空字符串,0和None作為False,所以上面的filter的語(yǔ)句就是移除空元素。
4.filter和函數(shù)
目的:找出以J開(kāi)頭的名字
def?startsWithJ(element):
if?element:
return?element[0]?==?'J'
return?False
j_names?=?filter(startsWithJ,?names)
print?j_names
輸出結(jié)果是元組:('Jack',?'Jill')
注意到了嗎,上面的2個(gè)結(jié)果都是tuple而不是list,再一次說(shuō)明fliter的返回值類(lèi)型與參數(shù)序列的類(lèi)型保持一致
sorted函數(shù)python介紹如下
sorted() 作為?Python?內(nèi)置函數(shù)之一,其功能是對(duì)序列(列表、元組、字典、集合、還包括字符串)進(jìn)行排序。
sorted() 函數(shù)的基本語(yǔ)法格式如下
list = sorted(iterable, key=None, reverse=False)
其中,iterable 表示指定的序列,key 參數(shù)可以自定義排序規(guī)則;reverse 參數(shù)指定以升序(False,默認(rèn))還是降序(True)進(jìn)行排序。sorted() 函數(shù)會(huì)返回一個(gè)排好序的列表。
注意,key 參數(shù)和 reverse 參數(shù)是可選參數(shù),即可以使用,也可以忽略。
演示sorted()函數(shù)的基本代碼用法:
#對(duì)列表進(jìn)行排序
a = [5,3,4,2,1]
print(sorted(a))
#對(duì)元組進(jìn)行排序
a = (5,4,3,1,2)
print(sorted(a))
#字典默認(rèn)按照key進(jìn)行排序
a = {4:1,\
5:2,\
3:3,\
2:6,\
1:8}
print(sorted(a.items()))
#對(duì)集合進(jìn)行排序
a = {1,5,3,2,4}
print(sorted(a))
#對(duì)字符串進(jìn)行排序
a = "51423"
print(sorted(a))