數(shù)據(jù)處理的100個(gè)Python小技巧_第1頁(yè)
數(shù)據(jù)處理的100個(gè)Python小技巧_第2頁(yè)
數(shù)據(jù)處理的100個(gè)Python小技巧_第3頁(yè)
數(shù)據(jù)處理的100個(gè)Python小技巧_第4頁(yè)
數(shù)據(jù)處理的100個(gè)Python小技巧_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)處理的100個(gè)Python小技巧

目前Python可以說(shuō)是非常流行,在目前的編程語(yǔ)言中,Python的抽象程度

是最高的,是最接近自然語(yǔ)言的,很容易上手。

你可以用它來(lái)完成很多任務(wù),比如數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)、Web開發(fā)、腳本編

寫、自動(dòng)化等。

[1、for循環(huán)中的else條件

這是一個(gè)for-else方法,循環(huán)遍歷列表時(shí)使用else語(yǔ)句。

下面舉個(gè)例子,比如我們想檢查一個(gè)列表中是否包含奇數(shù)。

那么可以通過(guò)for循環(huán),遍歷查找。

numbers=[2,4,6,8,1]

fornumberinnumbers:

ifnumber%2==1:

print(number)

break

else:

print(MNooddnumbers")

如果找到了奇數(shù),就會(huì)打印該數(shù)值,并且執(zhí)行break語(yǔ)句,跳過(guò)else語(yǔ)句。

沒有的話,就不會(huì)執(zhí)行break語(yǔ)句,而是執(zhí)行else語(yǔ)句。

I2、從列表中獲取元素,定義多個(gè)變量

my」List=[1,2,3,%5]

one,twothree,four,five=my_list

3、使用heapq模塊,獲取列表中n個(gè)最大或最小的元素

impor!heapq

scores=[51,33,64,87,91,75,T5,49,33,821

prirrt(heapq.nlargest(3,scores))#[91,87,82]_________

print(heapq.nsmallest(5,scores))#[15,33,33,49,51]

I4、將列表中的所有元素作為參數(shù)傳遞給函數(shù)

我們可以使用*號(hào),提取列表中所有的元素

my_list=[1,2,3,4]

print(my_list)#[1,2,3,4]

print(*my_list)#1234

如此便可以將列表中的所有元素,作為參數(shù)傳遞給函數(shù)

dersum_of_elements(*arg):

total=0

foriinarg:

total+=i

returntotal

resultsum_of_aelements(*[lJ2,3,4])

print(result)#10

I5、獲取列表的所有中間元素

_j*elements_in_the_middle,_=[1,2,3,4,5,6,7,8]

print(elements_in_the_middle)#[2,3,4,5,6,7]

I6、使用一行代碼賦值多個(gè)變量

one,two,three,four=1,2,3,4

I7、列表推導(dǎo)式

只用一行代碼,便可完成對(duì)數(shù)組的迭代以及運(yùn)算。

比如,將列表中的每個(gè)數(shù)字提高一倍。

numbers=[1,3,4,5]

squared_numbers=[num*numfornuminnumbers]

print(squared_numbers)#[1,4,9,16,25]

推導(dǎo)式不僅列表能用,字典、集合、生成器也能使用。

下面看一下,使用字典推導(dǎo)式,將字典的值提高一倍。

dictionary={'a':4,'b':5)

squared__dictionary={key:num*numfor(key,num)indictionary.items()}

print(squared_dictionary)#{'a':16,'b':25}

I8、通過(guò)Enum枚舉同一標(biāo)簽或一系列常量的集合

枚舉是綁定到唯一的常量值的一組符號(hào)名稱(成員)。

在枚舉中,成員可以通過(guò)身份進(jìn)行比較,枚舉本身可以迭代。

I9、重復(fù)字符串

name="Banana"

print(name*4)#BananaBananaBananaBanana

I10,比較3個(gè)數(shù)字的大小

如果想比較一個(gè)值和其他兩個(gè)值的大小情況,你可以使用簡(jiǎn)單的數(shù)學(xué)表達(dá)

式。

1<X<10

這個(gè)是最簡(jiǎn)單的代數(shù)表達(dá)式,在Python中也是可以使用的。

x=3

print(l<x<10)#True

print(l<xandx<10)#True

111、使用1行代碼合并字典

first_dictionary={'name':'Fan','location':'Guangzhou'}_____________________

second_dictionary={'name':'Fan','surname*:'Xiao,,'location':'Guangdong^^u

angzhou'}

result=first_dictionary|second_dictionary_____________________________________

print(result)

#{'name*:'Fan','location':'Guangdong,Guangzhou','surname':'Xiao'}

I12、查找元組中元素的索引

books—('Atomichabits','Egoistheenemy','Outliers','Mastery')

print(books.index('Mastery'))#3

I13、將字符串轉(zhuǎn)換為字符串列表

假設(shè)你在函數(shù)中獲得輸出,原本應(yīng)該是一個(gè)列表,但實(shí)際上卻是一個(gè)字符

串。

i叩ut=”[1,2,3]“

你可能第一時(shí)間會(huì)想到使用索引或者正則表達(dá)式。

實(shí)際上,使用ast模塊的literal_eval方法就能搞定。

importast

string_to_list(string)j________

retui!:ast.literal_eval(string)

string="[1,2,3]”

my_list=string_to_list(string)

print(my_list)#[1,2,3]

string="[[1,2,3],[4,5,6]]"

=string_to_list(string)

print(my_list)#[[1>2,3],[4,5,6]]

I14,計(jì)算兩數(shù)差值

計(jì)算出2個(gè)數(shù)字之間的差值。

defsubtract(a,b)

returna-b

print((subtract(l,3)))it-2

print((subtract(3,1)))#2

上面的這個(gè)方法,需要考慮數(shù)值的先后順序

defsubtract(a,b)

returna-b

print((subtract(a=l,b=3)))#?2

print((subtract(b=3,a=l)))#-2

使用命名參數(shù),安排順序,這樣就不會(huì)出錯(cuò)了。

|15、用一個(gè)print。語(yǔ)句打印多個(gè)元素

print(l,2,3,"a","z"j"thisishere","hereissomethingelse")

I16.在同一行打印多個(gè)元素

print("Hello",end="")

print("World")#HelloWorld

printC'Hello",end=n")

print("World")HelloWorld

print('words','with','commas','in','between',sep='「)

#words,with,commas,in,between

I17、打印多個(gè)值,在每個(gè)值之間使用自定義分隔符

print(“29",“01“,“2022”,sep="/“)#29/01/2022

print("name"j"",sep="0")#name@

I18、不能在變量名的開頭使用數(shù)字

foujletters="abed"#thisworks

4_letters="abed"#thisdoesn'twork

這是Python的變量命名規(guī)則。

I19、不能在變量名的開頭使用運(yùn)算符

+variable="abed"#thisdoesn'twork

I20、數(shù)字的第一位不能是0

number=0110#thisdoesn'twork

這個(gè)確實(shí)挺神奇的。

|21、在變量名的任何地方使用下劃線

a_b="abed"#thisworks

__a_b_c_d="abed"#thisalsoworks

這并不意味著,你可以無(wú)限使用,為了代碼的易讀性,還是需要合理使用。

I22、使用下劃線分割數(shù)值較大的數(shù)字

print(1__000_000_000)#1000000000

print(1_234_567)#1234567

如此,看到一大堆數(shù)字時(shí),也能輕松閱讀。

I23、反轉(zhuǎn)列表

my」ist=[W,'c]W]

my_list.reverse()

print(my_list)#['d1,'b1,fa1]

I24、使用步進(jìn)函數(shù)對(duì)字符串切片

my_string="Thisisjustasentence"

print(my_string[0:5])#This

#Takejthreestepsforward

print(my_string[0:10:3])#Tsse

I25、反向切片

my_string=_"Thisisjustasentence"

[10:0:-1])#sujsisih

#Taketwostepsforward

print(my_string[10:0:-2])#sjsi

I26、使用開始或結(jié)束索引進(jìn)行切片

my_string="Thisisjustasentence"

print(my_string[4:])#isjustasentence

print(my_string[:3])#Thi

I27、/和〃的區(qū)別

print(3/2)#1.5

print(3//2)#1

|28、==和1$的區(qū)別

is:檢查兩個(gè)變量是否指向同一對(duì)象內(nèi)存中

==:比較兩個(gè)對(duì)象的值

first_list=[1,2,3]

second_list=[1,2,3]

#比較兩個(gè)值

print(firsjlist==second_list)#True

#是否指向同?內(nèi)存

printis3econd_list)

#False

third_list=first_list

print(third_listisfirsjlist)

#True

I29、合并字典

dictionary__one("a":1,"b":2}

dictionary_two={七":3,“d”:4}

merged={**dictionary_oneJ**dictionary_two}

print(merged)#{'a':1,'b':2,'c':3,'d':4}

I30、檢直字符串是否大于另一字符串

first="abc"

second="def"

print(first<second)#True

second="ab"

print(first<second)#False

I31、檢查字符串是否以特定字符開頭(不使用索引)

my_string="abcdef"

print(my_string.startswith("b"))itFalse

|32、使用id()查找變量的唯一id

print(id(l))#4325776624

print(id(2))#4325776656

print(id("string"))#4327978288

I33、整數(shù)、浮點(diǎn)數(shù)、字符串、布爾值和元組都是不可變的

當(dāng)變量被賦值為整數(shù)、浮點(diǎn)數(shù)、字符串、布爾值、元組這些不可變類型后,

該變量就會(huì)指向一個(gè)內(nèi)存對(duì)象。

如果重新給變量再賦值,它的內(nèi)存對(duì)象就會(huì)發(fā)生改變。

number=1______________________

print(id(number))#4325215472

print(id(l))#4325215472

number=3

print(id(number))#4325215^36

print(id(l))#4325215472

I34、字符串和元組也是不可變的

此處再說(shuō)明一次。

name="Fatos"

print(id(name))#4422282544

name="fatos”

print(id(name))#4422346608

I35、列表、集合和字典都是可變的

這意味著發(fā)生更改時(shí),不會(huì)改變其內(nèi)存對(duì)象。

cities=["Beijing","Guangzhou","chengdu"]

print(id(cities))#4482699712

cities.append("Beijing")

print(id(cities))#4482699712

下面是字典。

my_set={1,2,3,4}

print(id(my_set))#4352726176

my_set.add⑸

print(id(my_set))#4352726176

I36、把一個(gè)列表變成不可變的列表

my_set=frozenset(['a','b\'c\P'])

my_set.add("a")

使用frozenset()后,你就無(wú)法更改了。

|37、if-elif塊可以在沒有else塊的情況下存在

但是elif不能在沒有if語(yǔ)句之前獨(dú)立存在。

defcheck_number(number)

_ifnumber>0:

"Positive"

elifnumber==0;

retui'i"Zero"

____r*"Negative"____________

print(check_number(l))#Positive

I38、使用sorted。檢查2個(gè)字符串是否為相同

defcheck_if_anagram(first_wor*d,second_word):______

first_word=first_word.lower()

second_word=second_word.lower()

returnsorted(first_word)==sorted(second_word)

print(check_if_anagram("testinG","Testing")):;??;

print(check_if_anagratn("Here","Rehe"))#True

print(check_if_anagram("Know","Now"))#False

I39、獲取字符的Unicode值

print(ord("A"))#65

printCordC'B"))#66

print(ord("C"))#66

print(ord("a"))#97

I40、獲取字典的健

雅磁勃碑ry={"a":工,“b“:2,“c":3}

keys=dictionary.keys()

print(list(keys))#['a','b','c']

41、獲取字典的值

dictionary={“a”:1,“b“:2,“c”:3}

valuesdictionary.values()

print(list(values))#[1,2,3]

I42、交換字典的鍵、值位置

dictionary={"a":1,"b":2,"c":3}

reversed_dictionary={j:ifori,jindictionary.items。}

print(reversed)#{1:'a',2:'b',3:'c'}

I43、將布爾值轉(zhuǎn)換為數(shù)字

print(int(False))#0

print(float(True))#1.0

I44、在算術(shù)運(yùn)算中使用布爾值

X=10

y=12

resuIt=(x-False)/(y*True)

print(result)#0,8333333333333334

I45、將任何數(shù)據(jù)類型轉(zhuǎn)換為布爾值

print(bool(.0))#False_____

print(bool⑶)#True

print(bool("-"))#True

print(bool("string")):;True

print(bool(""))#True

I46、將值轉(zhuǎn)換為復(fù)數(shù)

print(complex(10j2))#(10+2j)

也可以將數(shù)字轉(zhuǎn)換為十六進(jìn)制數(shù)。

print(hex(ll))#0xb

I47、在列表的第一個(gè)位置添加一個(gè)值

如果使用叩pend(),將從列表的最后一個(gè)位置插入新值。

可以通過(guò)使用insertO,來(lái)指定插入新元素的索引和數(shù)值。

那么列表的第一個(gè)位置為0,即下標(biāo)為0。

my_list=[3,5]

my_list.append⑹

my_list.insert(0,2)

print(my_list)#[2,3,4,5,6]

I48、Lambda函數(shù)只能在一行代碼中

無(wú)法通過(guò)多行代碼,來(lái)使用lambda函數(shù)。

comparison=iambd/ix:x>3:

print("x>3")

else:

print("xisnotgreaterthan3")

報(bào)錯(cuò)。

comparison=lambdax:ifx>3:

A

SyntaxError:invalidsyntax

49、Lambda中的條件語(yǔ)句應(yīng)始終包含else語(yǔ)句

comparison=lambdax:"x>3"x>3

運(yùn)行上面的代碼,報(bào)錯(cuò)。

comparison=lambdax:ifx>3:

SyntaxError:invalidsyntax

這是由于條件表達(dá)式的特性,而不是lambda的導(dǎo)致的。

I50、使用filter(),獲得一個(gè)新對(duì)象

my_list=[1,2,3,4]

odd=filter(lambdax:x%2==?」my_list)

print(list(odd))#[1,3]

print(my_list)#[1,2,3,4]

|51、map()返回一個(gè)新對(duì)象

map()函數(shù)將給定函數(shù)應(yīng)用于可迭代對(duì)象(列表、元組等),然后返回結(jié)果

(map對(duì)象)。

my_list=二13[4]

squared=map(iambdax:x**2,my_list)

printQist(squared))#[1,4,9)16]

print(my__list)#[1,2,3,4]

I52、range。的step參數(shù)

fornumberinrange(1,10,3):

____print(number,end="")____

#147

53、range。默認(rèn)從0開始

defrange_with_zero(number):

foriinrange(0,number):

print(i,end=,

range_with_no_zero(number)

foriinrange(number):

print(ijend='')

range_with_zero(3)#012

range_with_no_zero(3)#012

I54、不需要和0比較長(zhǎng)度

如果長(zhǎng)度大于0,則默認(rèn)為True。

山,get_element_with_comparison(my_list):

iflen(my_list)>0:

returnmy_list[0]

defget_first_element(my_lis,Qj_____________________

iflen(my_list):

returnmy_list[0]___________________________

elemerrts=[1,2,3,42

first_result=get_element_with_comparison(elements)

second_result=get_element_with_comparison(elements)

print(first_result==second_result)#True

I55、可以在同一個(gè)作用域內(nèi)多次定義一個(gè)方法

但是,只有最后一個(gè)會(huì)被調(diào)用,覆蓋以前。

defget_address()

"Firstaddress"

defget_address():_________

"Secondaddress"

defget_address():____________________________________________________________________

_____return"Thirdaddress**

print(get_address())#Thirdaddress

I56、在外部直接訪問(wèn)私有屬性

在定義屬性或方法時(shí),在屬性名或者方法名前增加兩個(gè)下劃線,定義的就是

私有屬性或方法。

如果想要在外部訪問(wèn),那么只需要在名稱前面加上'一類名'變成二類名—名稱

classEngineer:______________________________________________________________________

def_init_(self,name):

=name

_________seIf_starting_sa1ary=62000

dain=Engineer('Dain')

print(dain._Engineer_starting_salary)#62000

I57、檢查對(duì)象的內(nèi)存使用情況

importsys

print(sys.getsizeof("bitcoin"))#56

I58、定義一個(gè)方法,可以調(diào)用任意個(gè)參數(shù)

defget_sum(*arguments):

_____result=0_______________________________________________________________________

_____foriinarguments:______________________________________________________________

result+=i

_____returnresult

print(get_sum(l,2,3))#6_________________________________________________________

print(get_sum(1,2,3,4,5))#15

print(get_sum(lj2,3,4,5,6,7))#28

I59、使用super?;蚋割惖拿Q調(diào)用父類的初始化

使用super函數(shù)調(diào)用父類的初始化方法。

classParent:

def_init_(self,city,address):

self.city=city

self.address=address

classChild(Parent):

def_init_(self,city,address,university)j____________________________

super*。(city,address)

self.university=university

child=Child('PekingUniversity','FudanUniversity''TsinghuaUniversity')

print(child.university)#TsinghuaUniversity

使用父類的名稱調(diào)用父類,

classParent:

def_init一(self,city,address

self.city=city

self.address=address

classChild(Parent):

def^init__(self,city,address,university):

Parent._init_(self,city,address)

________self.universit)^=^university

child=Child('PekingUniversity','FudanUniversity','TsinghuaUniversity')

print(child.university)#TsinghuaUniversity

I60、在類中使用+操作符

在兩個(gè)int數(shù)據(jù)類型之間使用+運(yùn)算符時(shí),將得到它們的和。

而在兩個(gè)字符串?dāng)?shù)據(jù)類型之間使用它時(shí),會(huì)將其合并。

print(10+1)#兩數(shù)相加

print('first'+'second')#j工丁相川

這個(gè)就是操作符重載,你還可以在類中使用(_add_)。

classExpenses:

def_init_(self,rent,groceries):

self.rent=rent

self.groceries=groceries___________________

def_add_(self,other):

returnExpenses(self.rent+other.rent,

self.groceries+other.groceries)

april^expenses=Expenses(1000,200)

may_expenses=Expenses(1000,300)

total_expenses=april_expenses+may_expenses

print(total_expenses.rent)#2000

print(total_expenses.groceries)#500

I61、在類中使用<和==操作符

下面定義一個(gè)操作重載示例(<操作符),使用_lt_方法。

同樣的,==操作符使用_eq_方法。

classJourney:

def_init_(self,location,destination,duration):

self.location=location

self.destination=destination

self.duration=duration

def_eq一(selfother):______________________________

________return((self.location==other.location)and______

(self.destination==other.destination)Ed

(self.duration==other.duration))

first=3ourney('LocationA'^'DestinationA''30min')

second=3ourney('LocationB*,'DestinationB','30min')

print(first==second)

還有一些其他的定義。

_sub_()for-

_mul()for*

_truediv()for/

_ne_()for!=

_ge_()for>=

_gt_0for>

I62、為類的對(duì)象定義自定義的可打印版本

I63、交換字符串中字符的大小寫

string="Thisisjustasentence.n

result=string.swapcaseQ______________

print(result)#tHISIS3USTASENTENCE.

64、檢查字符串是否都是空格

string=""

result=string.isspace()

print(result)#True

I65、檢查字符串是否都是字母或數(shù)字

name="Password"

print(name.isalnum())#True

name三"SecurePassword"

print(name.isalnum())#False

name="S3cur3P4ssw0rd^_______

print(name.isalnum())#True

name="133"

print(name,isalnum())#True

I66、檢查字符串是否都是字母

string_="Name"

print(string.isalpha())_#True

string="FirstnameLastname"

print(string.isalpha())#False

string=J^P4ssw0rd"

print(string.isalpha())#False

I67、根據(jù)參數(shù)刪除字符

從右側(cè)開始。

string=J'Jhisisasentencewith______"

print(string.rstrip())#"Thisisasentencewith"

string="thishereisasentence.....,aaaaasd"

print(string.rstrip(".,dsa"))汁"thishereisasentence"

同樣的,左側(cè)也能操作。

string="ffffffffFirstn

print(string.lstrip("f"))#First

I68、檢查字符串是否為數(shù)字

string="seven"

print(string.isdigit())#False

string="1337"

print(string.isdigit())#True

string="5a"

print(string.isdigit())#False

string="2**5"

print(string.isdigit())#False

I69、檢查字符串是否為中文數(shù)字

#42673

string="四二六七="

print(string,isdigit。)#False

print(string.isnumeric())#True

I70、檢查字符串是否所有單詞都是大寫開頭

string="Thisisasentence"_____________

print(string.istitle())#False

string="10PythonTips”

print(string?istitle())#True___________

string="HowtoPrintAStringinPython"

#False

print(string.istitle())

string="PYTHON"

print(string.istitle())#False

I71.在元組中使用負(fù)索引

numbers=(1,2,3,4)_

print(numbers[-!])#4

print(numbers[-4])#1

I72、在元組中嵌套列表和元組

mixed_tuple=(("a"*10,3,4)j['first','second','third'])

print(mixed_tuple[I])#「first],second',1third,]_______

print(mixed__tuple[0])#('aaaaaaaaaa',3,4)

I73、快速統(tǒng)計(jì)元素在列表中出現(xiàn)的次數(shù)

names^["Besim","Albert","Besim","Fisnik","Meriton"]

print(names.count("Besim"))#2

I74、使用slice。獲取元素

使用slice。獲取最后n個(gè)元素。

my_list=[1,2,3,4,5,6,7,8,9,10]

slicing=slice(-4,None)

print(my_list[slicing])#[4,5,6]

print(my_list[-3])#4

使用slice。做切片任務(wù)。

string二"DataScience"

slice_object=slice(5,None)__________

print(string[slice_object])#Science

75、計(jì)算元素在元組中出現(xiàn)的次數(shù)

my_tuple=('a11,‘fl'a',5,'a')

print(my_tuple.count('a'))#3

I76、獲取元組中元素的索引

my.tuple=('a',1,'f\'a\5,'a')

print(my_tuple.index('f'))#2

I77、步進(jìn)獲得元組

my_tuple=(1,2,3,4,5,6,7,8,9,10)

print(my_tuple[::3])#(1,4,7,10)

I78、通過(guò)索引獲取子元組

my_tuple=(1,2,3,4,5,6,7,8,J^10)

print(my_tuple[3:])#(4,5,6,7,8,9,10)

I79、格列表、集合、字典中所有元素刪除

=[工,2,3,4]

my_1ist.clear()________

print(my_list)#[]

my-set={1」2,^}

my_set.clearQ____________

print(my_set)#set()

my_dict={“a”:1,nb":2)

my_dict^clear()___________

print(my__dict)#{}

80、合并集合

使用union。方法,返回一個(gè)新集合。

first_set={4>5,6)

second_set={1>2,3}

print(first_set.union(second_set))#{1,2,3,4,5,6}

還可以使用update。方法,將第二個(gè)集合的元素插入到第一個(gè)集合中去。

first_set={4,5,6)

second_set={1,2,3}

first_set.update(second_set)_______

print(first_set)#{1,2,3,5,6}

I81、在函數(shù)里輸出結(jié)果

de-Fis_positive(number):

print("Positive“ifnumber>0else"Negative")#Positive

is_positive(-3)

I82、if語(yǔ)句中的多介條件

math_points=51

Jbiology__poi^nts=78

physics_points=56

history_points=72

my_conditions=[math_points>50』biology_points>50J______________________

physics_points>50,history_points>50]_____________________

all(my_conditions):______________________________________________________

print("Congratulations!Youhavepassedalloftheexams.*')

else:

print("Iamsorry,butitseemsthatyouhavetorepeatatleastoneexam.")

#Congratulations!Youhavepassedalloftheexams.

I83、在一個(gè)if語(yǔ)句中,至少滿足多個(gè)條件中的一個(gè)

math_points=40

biology_points=78

physics_points=56

history_points=72

my_conditions=[math_points>50,biology_points>50,

physics__points>50,history__points>50]

ifany(my_conditions):

print("Congratulations!Youhavepassedalloftheexams.")

else:

print("工amsorry,butitseemsthatyouhavetorepeatatleastoneexam.")

#Congratulations!Youhavepassedalloftheexams.

I84、任何非空字符串都為True

print(bool("Nonempty"))#True

print(bool("**))#False

I85、任何非空列表、元組、字典都為True

print(bool([]))#False

print(bool(set([])))False

print(bool({}))#False

print(bool({"a":1}))#True

|86、None、False、0都為False

print(bool(False))#False

print(bool(None))#False

print(bool(0))#False

I87、在函數(shù)中使用全局變量

在函數(shù)無(wú)法直接修改全局變量的值。

string^"string"

defdo_nothing():

string="insideamethod

do_nothing()

print(string)#string

可通過(guò)修飾符global,修改全局變量的值。

string="string"

defdo_nothing()

_____globalstring

string="insideamethod

do_noj±ing()

print(string)#insideamethod

I88、計(jì)算字符串或列表中元素的數(shù)量

使用collections中的Counter計(jì)算字符串或列表中元素的數(shù)量。

fromco11ectionsimportCounter_____________________________________________________

result=Counter("Banana")

print(result)#Counter({*a':3,'n1:2,'2})

result=Counter([lj2,1,3,a%1,5,1,61)

print(result)#Counter({1:5.2:1.3:1,4:1,5:1,6:1})

I89、檢查2介字符串是否為相同

可以使用Counter。方法。

fromcollectionsimportCounter

deicheck_if_anagram(first_string,second_string):

first_string=first_string.lower()

second_string=second_string.lowerQ__________________

_____returnCounter(first_string)==Counter(second_string)

print(check_if_anagram('testinG','Testing*))#True

print(check_if_anagram('Here','Rehe'))#True___________

print(check_if_anagram('Know','Now'))#False

可以使用sorted。方法。

dufcheck_if_anagram(first^ord,second_word):

first_word=first_word.lower()

second_word=second_word.lower()

___returnsorted(first_word)==sorted(second_word)

print(check_if_anagram(HtestinG","Testing"))HTrue

print(check_if_anagram("Here","Rehe"))><True

print(check_if_anagram("Know","Now"))#False

I90、使用itertools中的count計(jì)算元素的數(shù)量

fromitertoolsimportcount

my_vowels=「a;'e,'i,P','A','E','0;'U']

current_counter=count()

string="Thisisjustasentence.”

foriinstring:

ifiinmy_vowels:

print(f"Currentvowel:{i}")

print(f"Numberofvowelsfoundsofar:{next(current__counter)}")

輸出如下。

Currentvowel:i

Numberofvowelsfoundsofar:0

Currentj/owel:i

Numberofvowelsfoundsofar:1

Currentvowel:u

Numberofvowelsfoundsofar:2

Currentvowel:a

Numberofvowelsfoundsofar:3

Currentvowel:e

Numberofvowelsfoundsofar:4

Currentvowel:e

Numberofvowelsfoundsofar:5

Currentvowel:e

Numberofvowelsfoundsofar:6

I91、對(duì)字符串或列表的元素進(jìn)行次數(shù)排序

collections模塊的Counter。,默認(rèn)情況下是不會(huì)根據(jù)元素的頻率對(duì)它們進(jìn)

行排序的。

fromcollectionsimportCounter_________________________

result=Counter([l,2,3,2,2,2,2])

print(result)#Counter({2:5,1:1,3:1})

print(result.most_common())#[(2,5),(1,1),(3,1)]

map()函數(shù)將給定函數(shù)應(yīng)用于可迭代對(duì)象(列表、元組等),然后返回結(jié)果

(map對(duì)象)。

I92、查找列表中出現(xiàn)頻率最高的元素

my_list=['1',1,0,'a','b',2,'a','c\'a']

print(max(set(my_list),key=my__list.count))

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論