1. 程式人生 > 其它 >python的小技巧

python的小技巧

▍1、for迴圈中的else條件

這是一個for-else方法,迴圈遍歷列表時使用else語句。

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

那麼可以通過for迴圈,遍歷查詢。

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

fornumberinnumbers:
ifnumber%2==1:
print(number)
break
else:
print("Nooddnumbers")

如果找到了奇數,就會列印該數值,並且執行break語句,跳過else語句。

沒有的話,就不會執行break語句,而是執行else語句。

▍2、從列表中獲取元素,定義多個變數

my_list=[1,2,3,4,5]
one,two,three,four,five=my_list

▍3、使用heapq模組,獲取列表中n個最大或最小的元素

importheapq

scores=[51,33,64,87,91,75,15,49,33,82]

print(heapq.nlargest(3,scores))#[91,87,82]
print(heapq.nsmallest(5,scores))#[15,33,33,49,51]

▍4、將列表中的所有元素作為引數傳遞給函式

我們可以使用 * 號,提取列表中所有的元素

my_list=[1,2,3,4]

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

如此便可以將列表中的所有元素,作為引數傳遞給函式

defsum_of_elements(*arg):
total=0
foriinarg:
total+=i

returntotal


result=sum_of_elements(*[1,2,3,4])
print(result)#10

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

_,*elements_in_the_middle,_=[1,2,3,4,5,6,7,8]
print(elements_in_the_middle)#[2,3,4,5,6,7]

▍6、使用一行程式碼賦值多個變數

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

▍7、列表推導式

只用一行程式碼,便可完成對陣列的迭代以及運算。

比如,將列表中的每個數字提高一倍。

numbers=[1,2,3,4,5]
squared_numbers=[num*numfornuminnumbers]

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

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

下面看一下,使用字典推導式,將字典的值提高一倍。

dictionary={'a':4,'b':5}
squared_dictionary={key:num*numfor(key,num)indictionary.items()}

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

▍8、通過Enum列舉同一標籤或一系列常量的集合

列舉是繫結到唯一的常量值的一組符號名稱(成員)。

在列舉中,成員可以通過身份進行比較,列舉本身可以迭代。

fromenumimportEnum


classStatus(Enum):
NO_STATUS=-1
NOT_STARTED=0
IN_PROGRESS=1
COMPLETED=2


print(Status.IN_PROGRESS.name)#IN_PROGRESS
print(Status.COMPLETED.value)#2

▍9、重複字串

name="Banana"
print(name*4)#BananaBananaBananaBanana

▍10、比較3個數字的大小

如果想比較一個值和其他兩個值的大小情況,你可以使用簡單的數學表示式。

1<x<10

這個是最簡單的代數表示式,在Python中也是可以使用的。

x=3

print(1<x<10)#True
print(1<xandx<10)#True

▍11、使用1行程式碼合併字典

first_dictionary={'name':'Fan','location':'Guangzhou'}
second_dictionary={'name':'Fan','surname':'Xiao','location':'Guangdong,Guangzhou'}

result=first_dictionary|second_dictionary

print(result)
#{'name':'Fan','location':'Guangdong,Guangzhou','surname':'Xiao'}

▍12、查詢元組中元素的索引

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

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

▍13、將字串轉換為字串列表

假設你在函式中獲得輸出,原本應該是一個列表,但實際上卻是一個字串。

input="[1,2,3]"

你可能第一時間會想到使用索引或者正則表示式。

實際上,使用ast模組的literal_eval方法就能搞定。

importast


defstring_to_list(string):
returnast.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]]"
my_list=string_to_list(string)
print(my_list)#[[1,2,3],[4,5,6]]

▍14、計算兩數差值


計算出2個數字之間的差值。

defsubtract(a,b):
returna-b


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


上面的這個方法,需要考慮數值的先後順序。

defsubtract(a,b):
returna-b


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


使用命名引數,安排順序,這樣就不會出錯了。

▍15、用一個print()語句列印多個元素

print(1,2,3,"a","z","thisishere","hereissomethingelse")

▍16、在同一行列印多個元素

print("Hello",end="")
print("World")#HelloWorld

print("Hello",end="")
print("World")#HelloWorld

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

▍17、列印多個值,在每個值之間使用自定義分隔符

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

print("name","domain.com",sep="@")#[email protected]

▍18、不能在變數名的開頭使用數字

four_letters="abcd"#thisworks

4_letters="abcd"#thisdoesn’twork

這是Python的變數命名規則。

▍19、不能在變數名的開頭使用運算子

+variable="abcd"#thisdoesn’twork

▍20、數字的第一位不能是0

number=0110#thisdoesn'twork

這個確實挺神奇的。

▍21、在變數名的任何地方使用下劃線

a______b="abcd"#thisworks
_a_b_c_d="abcd"#thisalsoworks

這並不意味著,你可以無限使用,為了程式碼的易讀性,還是需要合理使用。

▍22、使用下劃線分割數值較大的數字

print(1_000_000_000)#1000000000
print(1_234_567)#1234567

如此,看到一大堆數字時,也能輕鬆閱讀。

▍23、反轉列表

my_list=['a','b','c','d']

my_list.reverse()

print(my_list)#['d','c','b','a']

▍24、使用步進函式對字串切片

my_string="Thisisjustasentence"
print(my_string[0:5])#This

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

▍25、反向切片

my_string="Thisisjustasentence"
print(my_string[10:0:-1])#sujsisih

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

▍26、使用開始或結束索引進行切片

my_string="Thisisjustasentence"
print(my_string[4:])#isjustasentence

print(my_string[:3])#Thi

▍27、/和//的區別

print(3/2)#1.5
print(3//2)#1

▍28、==和is的區別

is:檢查兩個變數是否指向同一物件記憶體中

==:比較兩個物件的值

first_list=[1,2,3]
second_list=[1,2,3]

#比較兩個值
print(first_list==second_list)#True

#是否指向同一記憶體
print(first_listissecond_list)
#False


third_list=first_list

print(third_listisfirst_list)
#True

▍29、合併字典

dictionary_one={"a":1,"b":2}
dictionary_two={"c":3,"d":4}

merged={**dictionary_one,**dictionary_two}

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

▍30、檢查字串是否大於另一字串

first="abc"
second="def"

print(first<second)#True

second="ab"
print(first<second)#False

▍31、檢查字串是否以特定字元開頭(不使用索引)

my_string="abcdef"
print(my_string.startswith("b"))#False

▍32、使用id()查詢變數的唯一id

print(id(1))#4325776624
print(id(2))#4325776656
print(id("string"))#4327978288

▍33、整數、浮點數、字串、布林值和元組都是不可變的

當變數被賦值為整數、浮點數、字串、布林值、元組這些不可變型別後,該變數就會指向一個記憶體物件。

如果重新給變數再賦值,它的記憶體物件就會發生改變。

number=1
print(id(number))#4325215472
print(id(1))#4325215472

number=3
print(id(number))#4325215536
print(id(1))#4325215472

▍34、字串和元組也是不可變的

此處再說明一次。

name="Fatos"
print(id(name))#4422282544

name="fatos"
print(id(name))#4422346608

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

這意味著發生更改時,不會改變其記憶體物件。

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(5)
print(id(my_set))#4352726176

▍36、把一個列表變成不可變的列表

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

my_set.add("a")

使用frozenset()後,你就無法更改了。

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

但是elif不能在沒有if語句之前獨立存在。

defcheck_number(number):
ifnumber>0:
return"Positive"
elifnumber==0:
return"Zero"

return"Negative"


print(check_number(1))#Positive

▍38、使用sorted()檢查2個字串是否為相同

defcheck_if_anagram(first_word,second_word):
first_word=first_word.lower()
second_word=second_word.lower()
returnsorted(first_word)==sorted(second_word)


print(check_if_anagram("testinG","Testing"))#True
print(check_if_anagram("Here","Rehe"))#True
print(check_if_anagram("Know","Now"))#False

▍39、獲取字元的Unicode值

print(ord("A"))#65
print(ord("B"))#66
print(ord("C"))#66
print(ord("a"))#97

▍40、獲取字典的鍵

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

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

▍41、獲取字典的值

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

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

▍42、交換字典的鍵、值位置

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

reversed_dictionary={j:ifori,jindictionary.items()}
print(reversed)#{1:'a',2:'b',3:'c'}

▍43、將布林值轉換為數字

print(int(False))#0
print(float(True))#1.0

▍44、在算術運算中使用布林值

x=10
y=12

result=(x-False)/(y*True)
print(result)#0.8333333333333334

▍45、將任何資料型別轉換為布林值

print(bool(.0))#False
print(bool(3))#True
print(bool("-"))#True
print(bool("string"))#True
print(bool(""))#True

▍46、將值轉換為複數

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

也可以將數字轉換為十六進位制數。

print(hex(11))#0xb

▍47、在列表的第一個位置新增一個值

如果使用append(),將從列表的最後一個位置插入新值。

可以通過使用insert(),來指定插入新元素的索引和數值。

那麼列表的第一個位置為0,即下標為0。

my_list=[3,4,5]

my_list.append(6)
my_list.insert(0,2)
print(my_list)#[2,3,4,5,6]

▍48、Lambda函式只能在一行程式碼中

無法通過多行程式碼,來使用lambda函式。

comparison=lambdax:ifx>3:
print("x>3")
else:
print("xisnotgreaterthan3")

報錯。

▍49、Lambda中的條件語句應始終包含else語句

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

執行上面的程式碼,報錯。

這是由於條件表示式的特性,而不是lambda的導致的。

▍50、使用filter(),獲得一個新物件

my_list=[1,2,3,4]

odd=filter(lambdax:x%2==1,my_list)

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

▍51、map()返回一個新物件

map()函式將給定函式應用於可迭代物件(列表、元組等),然後返回結果(map物件)。

my_list=[1,2,3,4]

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

print(list(squared))#[1,4,9,16]
print(my_list)#[1,2,3,4]

▍52、range()的step引數

fornumberinrange(1,10,3):
print(number,end="")
#147

▍53、range()預設從0開始

defrange_with_zero(number):
foriinrange(0,number):
print(i,end='')


defrange_with_no_zero(number):
foriinrange(number):
print(i,end='')


range_with_zero(3)#012
range_with_no_zero(3)#012

▍54、不需要和0比較長度

如果長度大於0,則預設為True。

defget_element_with_comparison(my_list):
iflen(my_list)>0:
returnmy_list[0]


defget_first_element(my_list):
iflen(my_list):
returnmy_list[0]


elements=[1,2,3,4]
first_result=get_element_with_comparison(elements)
second_result=get_element_with_comparison(elements)

print(first_result==second_result)#True

▍55、可以在同一個作用域內多次定義一個方法

但是,只有最後一個會被呼叫,覆蓋以前。

defget_address():
return"Firstaddress"


defget_address():
return"Secondaddress"


defget_address():
return"Thirdaddress"


print(get_address())#Thirdaddress

▍56、在外部直接訪問私有屬性

在定義屬性或方法時,在屬性名或者方法名前增加兩個下劃線,定義的就是私有屬性或方法。

如果想要在外部訪問,那麼只需要在名稱前面加上 '_類名' 變成 '_類名__名稱'。

classEngineer:
def__init__(self,name):
self.name=name
self.__starting_salary=62000


dain=Engineer('Dain')
print(dain._Engineer__starting_salary)#62000

▍57、檢查物件的記憶體使用情況

importsys

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

▍58、定義一個方法,可以呼叫任意個引數

defget_sum(*arguments):
result=0
foriinarguments:
result+=i
returnresult


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

▍59、使用super()或父類的名稱呼叫父類的初始化

使用super函式呼叫父類的初始化方法。

classParent:
def__init__(self,city,address):
self.city=city
self.address=address


classChild(Parent):
def__init__(self,city,address,university):
super().__init__(city,address)
self.university=university


child=Child('Peking University','Fudan University','Tsinghua University')
print(child.university)#Tsinghua University

使用父類的名稱呼叫父類。

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.university=university


child=Child('Peking University','Fudan University','Tsinghua University')
print(child.university)#Tsinghua University

▍60、在類中使用 + 操作符

在兩個int資料型別之間使用 + 運算子時,將得到它們的和。

而在兩個字串資料型別之間使用它時,會將其合併。

print(10+1)# 兩數相加
print('first'+'second')#字串相加

這個就是操作符過載,你還可以在類中使用(__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

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

下面定義一個操作過載示例( < 操作符),使用__lt__方法。

classGame:
def__init__(self,score):
self.score=score

def__lt__(self,other):
returnself.score<other.score


first=Game(1)
second=Game(2)

print(first<second)#True

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

classJourney:
def__init__(self,location,destination,duration):
self.location=location
self.destination=destination
self.duration=duration

def__eq__(self,other):
return((self.location==other.location)and
(self.destination==other.destination)and
(self.duration==other.duration))


first=Journey('LocationA','DestinationA','30min')
second=Journey('LocationB','DestinationB','30min')

print(first==second)

還有一些其他的定義。

__sub__()for-
__mul__()for*
__truediv__()for/
__ne__()for!=
__ge__()for>=
__gt__()for>

▍62、為類的物件定義自定義的可列印版本

classRectangle:
def__init__(self,a,b):
self.a=a
self.b=b

def__repr__(self):
returnrepr('Rectanglewitharea='+str(self.a*self.b))


print(Rectangle(3,4))#'Rectanglewitharea=12'

▍63、交換字串中字元的大小寫

string="Thisisjustasentence."
result=string.swapcase()

print(result)#tHISISJUSTASENTENCE.

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

string=""
result=string.isspace()

print(result)#True

▍65、檢查字串是否都是字母或數字

name="Password"
print(name.isalnum())#True

name="SecurePassword"
print(name.isalnum())#False

name="S3cur3P4ssw0rd"
print(name.isalnum())#True

name="133"
print(name.isalnum())#True

▍66、檢查字串是否都是字母

string="Name"
print(string.isalpha())#True

string="FirstnameLastname"
print(string.isalpha())#False

string="P4ssw0rd"
print(string.isalpha())#False

▍67、根據引數刪除字元

從右側開始。

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

string="thishereisasentence…..,,,,aaaaasd"
print(string.rstrip(".,dsa"))#"thishereisasentence"

同樣的,左側也能操作。

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

▍68、檢查字串是否為數字

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

▍69、檢查字串是否為中文數字

#42673
string="四二六七三"

print(string.isdigit())#False
print(string.isnumeric())#True

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

string="Thisisasentence"
print(string.istitle())#False

string="10PythonTips"
print(string.istitle())#True

string="HowtoPrintAStringinPython"
#False
print(string.istitle())

string="PYTHON"
print(string.istitle())#False

▍71、在元組中使用負索引

numbers=(1,2,3,4)

print(numbers[-1])#4
print(numbers[-4])#1

▍72、在元組中巢狀列表和元組

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

print(mixed_tuple[1])#['first','second','third']
print(mixed_tuple[0])#('aaaaaaaaaa',3,4)

▍73、快速統計元素在列表中出現的次數

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

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

▍74、使用slice()獲取元素

使用slice()獲取最後n個元素。

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()做切片任務。

string="DataScience"

slice_object=slice(5,None)
print(string[slice_object])#Science

▍75、計算元素在元組中出現的次數

my_tuple=('a',1,'f','a',5,'a')

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

▍76、獲取元組中元素的索引

my_tuple=('a',1,'f','a',5,'a')

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

▍77、步進獲得元組

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

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

▍78、通過索引獲取子元組

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

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

▍79、將列表、集合、字典中所有元素刪除

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

my_set={1,2,3}
my_set.clear()
print(my_set)#set()

my_dict={"a":1,"b":2}
my_dict.clear()
print(my_dict)#{}

▍80、合併集合

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

first_set={4,5,6}
second_set={1,2,3}

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

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

first_set={4,5,6}
second_set={1,2,3}

first_set.update(second_set)

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

▍81、在函式裡輸出結果

defis_positive(number):
print("Positive"ifnumber>0else"Negative")#Positive


is_positive(-3)

▍82、if語句中的多個條件

math_points=51
biology_points=78
physics_points=56
history_points=72

my_conditions=[math_points>50,biology_points>50,
physics_points>50,history_points>50]

ifall(my_conditions):
print("Congratulations!Youhavepassedalloftheexams.")
else:
print("Iamsorry,butitseemsthatyouhavetorepeatatleastoneexam.")
#Congratulations!Youhavepassedalloftheexams.

▍83、在一個if語句中,至少滿足多個條件中的一個

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("Iamsorry,butitseemsthatyouhavetorepeatatleastoneexam.")
#Congratulations!Youhavepassedalloftheexams.

▍84、任何非空字串都為True

print(bool("Nonempty"))#True
print(bool(""))#False

▍85、任何非空列表、元組、字典都為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

▍87、在函式中使用全域性變數

在函式無法直接修改全域性變數的值。

string="string"


defdo_nothing():
string="insideamethod"


do_nothing()

print(string)#string

可通過修飾符global,修改全域性變數的值。

string="string"


defdo_nothing():
globalstring
string="insideamethod"


do_nothing()

print(string)#insideamethod

▍88、計算字串或列表中元素的數量

使用collections中的Counter計算字串或列表中元素的數量。

fromcollectionsimportCounter

result=Counter("Banana")
print(result)#Counter({'a':3,'n':2,'B':1})


result=Counter([1,2,1,3,1,4,1,5,1,6])
print(result)#Counter({1:5,2:1,3:1,4:1,5:1,6:1})

▍89、檢查2個字串是否為相同

可以使用Counter()方法。

fromcollectionsimportCounter


defcheck_if_anagram(first_string,second_string):
first_string=first_string.lower()
second_string=second_string.lower()
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()方法。

defcheck_if_anagram(first_word,second_word):
first_word=first_word.lower()
second_word=second_word.lower()
returnsorted(first_word)==sorted(second_word)


print(check_if_anagram("testinG","Testing"))#True
print(check_if_anagram("Here","Rehe"))#True
print(check_if_anagram("Know","Now"))#False

▍90、使用itertools中的count計算元素的數量

fromitertoolsimportcount

my_vowels=['a','e','i','o','u','A','E','I','O','U']

current_counter=count()

string="Thisisjustasentence."

foriinstring:
ifiinmy_vowels:
print(f"Currentvowel:{i}")
print(f"Numberofvowelsfoundsofar:{next(current_counter)}")

輸出如下。

Currentvowel:i
Numberofvowelsfoundsofar:0
Currentvowel:i
Numberofvowelsfoundsofar:1
Currentvowel:u
Numberofvowelsfoundsofar:2
Currentvowel:a
Numberofvowelsfoundsofar:3
Currentvowel:e
Numberofvowelsfoundsofar:4
Currentvowel:e
Numberofvowelsfoundsofar:5
Currentvowel:e
Numberofvowelsfoundsofar:6

▍91、對字串或列表的元素進行次數排序

collections模組的Counter(),預設情況下是不會根據元素的頻率對它們進行排序的。

fromcollectionsimportCounter

result=Counter([1,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()函式將給定函式應用於可迭代物件(列表、元組等),然後返回結果(map物件)。

▍92、查詢列表中出現頻率最高的元素

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

print(max(set(my_list),key=my_list.count))#a

▍93、copy()和deepcopy()的區別

淺拷貝: 拷貝父物件,但是不會拷貝物件的內部的子物件。

深拷貝: 拷貝父物件. 以及其內部的子物件。

下面是一個copy()的例子。

first_list=[[1,2,3],['a','b','c']]

second_list=first_list.copy()

first_list[0][2]=831

print(first_list)#[[1,2,831],['a','b','c']]
print(second_list)#[[1,2,831],['a','b','c']]

這裡是一個deepcopy()的例子。

importcopy

first_list=[[1,2,3],['a','b','c']]

second_list=copy.deepcopy(first_list)

first_list[0][2]=831

print(first_list)#[[1,2,831],['a','b','c']]
print(second_list)#[[1,2,3],['a','b','c']]

▍94、訪問字典中不存在的鍵時,避免報錯

如果你想訪問字典一個不存在的鍵,程式碼會報錯。

my_dictonary={"name":"Name","surname":"Surname"}
print(my_dictonary["age"])

錯誤如下。

KeyError:'age'

可以通過使用defaultdict(),程式碼將不會報錯。

fromcollectionsimportdefaultdict

my_dictonary=defaultdict(str)
my_dictonary['name']="Name"
my_dictonary['surname']="Surname"

print(my_dictonary["age"])

▍95、構建迭代器

classOddNumbers:
def__iter__(self):
self.a=1
returnself

def__next__(self):
x=self.a
self.a+=2
returnx


odd_numbers_object=OddNumbers()
iterator=iter(odd_numbers_object)

print(next(iterator))#1
print(next(iterator))#3
print(next(iterator))#5

▍96、刪除列表的重複項

my_set=set([1,2,1,2,3,4,5])
print(list(my_set))#[1,2,3,4,5]

▍97、列印模組的安裝位置

importpandas

print(pandas)#<module'torch'from'/Users/...'

▍98、使用not in檢查一個值是否在列表中

odd_numbers=[1,3,5,7,9]
even_numbers=[]

foriinrange(9):
ifinotinodd_numbers:
even_numbers.append(i)

print(even_numbers)#[0,2,4,6,8]

▍99、sort()和sorted()的區別

sort():對原始列表進行排序

sorted():返回一個新的排序列表

groceries=['milk','bread','tea']

new_groceries=sorted(groceries)
#new_groceries=['bread','milk','tea']

print(new_groceries)

#groceries=['milk','bread','tea']
print(groceries)

groceries.sort()

#groceries=['bread','milk','tea']
print(groceries)

▍100、使用uuid模組生成唯一ID

UUID代表唯一識別符號。

importuuid

#根據主機ID、序列號和當前時間生成UUID
print(uuid.uuid1())#308490b6-afe4-11eb-95f7-0c4de9a0c5af

#生成一個隨機UUID
print(uuid.uuid4())#93bc700b-253e-4081-a358-24b60591076a