日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
用這10個(gè)小技巧加速Python編程

 編碼很有趣,而Python編碼更有趣,因?yàn)橛泻芏嗖煌姆椒梢詫?shí)現(xiàn)相同的功能。但是,大多數(shù)時(shí)候都有一些選擇的實(shí)現(xiàn)方法,有些人將其稱為Pythonic。這些Pythonic的共同特征是實(shí)現(xiàn)的代碼簡(jiǎn)潔明了。

創(chuàng)新互聯(lián)公司提供成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì),品牌網(wǎng)站制作,一元廣告等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,10余年的網(wǎng)站開發(fā)和建站經(jīng)驗(yàn),助力企業(yè)信息化建設(shè),成功案例突破上千余家,是您實(shí)現(xiàn)網(wǎng)站建設(shè)的好選擇.

用Python或任何編碼語(yǔ)言進(jìn)行編程不是像火箭一樣的科學(xué),而主要是關(guān)于技巧。如果有意嘗試使用Pythonic編碼,那么這些技術(shù)將很快成為我們工具包的一部分,并且我們會(huì)發(fā)現(xiàn)在項(xiàng)目中使用它們變得越來(lái)越自然。因此,讓我們探索其中的一些簡(jiǎn)單技巧。

1.負(fù)索引

人們喜歡使用序列,因?yàn)楫?dāng)我們知道元素的順序,我們就可以按順序操作這些元素。在Python中,字符串、元組和列表是最常見的序列數(shù)據(jù)類型。我們可以使用索引訪問(wèn)單個(gè)項(xiàng)目。與其他主流編程語(yǔ)言一樣,Python支持基于0的索引,在該索引中,我們?cè)谝粚?duì)方括號(hào)內(nèi)使用零訪問(wèn)第一個(gè)元素。此外,我們還可以使用切片對(duì)象來(lái)檢索序列的特定元素,如下面的代碼示例所示。

 
 
 
  1. >>> # Positive Indexing
  2. ... numbers = [1, 2, 3, 4, 5, 6, 7, 8]
  3. ... print("First Number:", numbers[0])
  4. ... print("First Four Numbers:", numbers[:4])
  5. ... print("Odd Numbers:", numbers[::2])
  6. ...
  7. First Number: 1
  8. First Four Numbers: [1, 2, 3, 4]
  9. Odd Numbers: [1, 3, 5, 7]

但是,Python通過(guò)支持負(fù)索引而進(jìn)一步走了一步。具體來(lái)說(shuō),我們可以使用-1來(lái)引用序列中的最后一個(gè)元素,并向后計(jì)數(shù)。例如,最后一個(gè)元素的索引為-2,依此類推。重要的是,負(fù)索引也可以與切片對(duì)象中的正索引一起使用。

 
 
 
  1. >>> # Negative Indexing
  2. ... data_shape = (100, 50, 4)
  3. ... names = ["John", "Aaron", "Mike", "Danny"]
  4. ... hello = "Hello World!"
  5. ...
  6. ... print(data_shape[-1])
  7. ... print(names[-3:-1])
  8. ... print(hello[1:-1:2])
  9. ...
  10. 4
  11. ['Aaron', 'Mike']
  12. el ol

2.檢查容器是否為空

容器是指可以存儲(chǔ)其他數(shù)據(jù)的那些容器數(shù)據(jù)類型。一些經(jīng)常使用的內(nèi)置容器是元組,列表,字典和集合。在處理這些容器時(shí),我們經(jīng)常需要在執(zhí)行其他操作之前檢查它們是否包含任何元素。確實(shí),我們可以檢查這些容器的長(zhǎng)度,該長(zhǎng)度與已存儲(chǔ)項(xiàng)目的數(shù)量相對(duì)應(yīng)。當(dāng)長(zhǎng)度為零時(shí),容器為空。下面顯示了一個(gè)簡(jiǎn)單的示例。

 
 
 
  1. if len(some_list) > 0:
  2.     # do something here when the list is not empty
  3. else:
  4.     # do something else when the list is empty

但是,這不是最好的Pythonic方式。相反,我們可以簡(jiǎn)單地檢查容器本身,它將在容器True包含元素時(shí)進(jìn)行評(píng)估。盡管以下代碼向您展示了主要的容器數(shù)據(jù)類型,但這種用法也可以應(yīng)用于字符串(即,任何非空字符串都是True)。

 
 
 
  1. >>> def check_container_empty(container):
  2. ...     if container:
  3. ...         print(f"{container} has elements.")
  4. ...     else:
  5. ...         print(f"{container} doesn't have elements.")
  6. ...
  7. ... check_container_empty([1, 2, 3])
  8. ... check_container_empty(set())
  9. ... check_container_empty({"zero": 0, "one": 1})
  10. ... check_container_empty(tuple())
  11. ...
  12. [1, 2, 3] has elements.
  13. set() doesn't have elements.
  14. {'zero': 0, 'one': 1} has elements.
  15. () doesn't have elements.

3.使用Split()創(chuàng)建字符串列表

我們經(jīng)常使用字符串作為特定對(duì)象的標(biāo)識(shí)符。例如,我們可以使用字符串作為字典中的鍵。在數(shù)據(jù)科學(xué)項(xiàng)目中,字符串通常是數(shù)據(jù)的列名。選擇多個(gè)列時(shí),不可避免地需要?jiǎng)?chuàng)建一個(gè)字符串列表。確實(shí),我們可以使用列表中的文字創(chuàng)建字符串。但是,我們必須編寫成對(duì)的引號(hào)將每個(gè)字符串括起來(lái),這對(duì)于“懶惰”的人來(lái)說(shuō)有點(diǎn)繁瑣。因此,我更喜歡利用字符串的split()方法來(lái)創(chuàng)建字符串列表,如下面的代碼片段所示。

 
 
 
  1. >>> # List of strings
  2. ... # The typical way
  3. ... columns = ['name', 'age', 'gender', 'address', 'account_type']
  4. ... print("* Literals:", columns)
  5. ...
  6. ... # Do this instead
  7. ... columns = 'name age gender address account_type'.split()
  8. ... print("* Split with spaces:", columns)
  9. ...
  10. ... # If the strings contain spaces, you can use commas instead
  11. ... columns = 'name, age, gender, address, account type'.split(', ')
  12. ... print("* Split with commas:", columns)
  13. ...
  14. * Literals: ['name', 'age', 'gender', 'address', 'account_type']
  15. * Split with spaces: ['name', 'age', 'gender', 'address', 'account_type']
  16. * Split with commas: ['name', 'age', 'gender', 'address', 'account type']

如上所示,split()默認(rèn)情況下,該方法使用空格作為分隔符,并根據(jù)字符串創(chuàng)建字符串列表。值得注意的是,當(dāng)您創(chuàng)建包含某些包含空格的元素的字符串列表時(shí),可以選擇使用其他類型的分隔符(例如,逗號(hào))。

這種用法受到一些內(nèi)置功能的啟發(fā)。例如,當(dāng)你創(chuàng)建一個(gè)元組類,我們可以這樣做:Student = namedtuple(“Student”, [“name”, “gender”, “age”])。字符串列表指定了元組的“屬性”。但是,也可以通過(guò)以下方式定義該類來(lái)本地支持它:Student = namedtuple(“Student”, “name gender age”)。對(duì)于另一個(gè)實(shí)例,創(chuàng)建一個(gè)Enum類支持相同的替代解決方案。

4.三元表達(dá)

在許多用例中,我們需要根據(jù)條件定義具有特定值的變量,并且我們可以簡(jiǎn)單地使用if ... else語(yǔ)句來(lái)檢查條件。但是,它需要幾行代碼。如果僅處理一個(gè)變量的賦值,則可能需要使用三元表達(dá)式,該表達(dá)式檢查條件并僅用一行代碼即可完成賦值。此外,它的格式更短,從而使代碼更加簡(jiǎn)潔。考慮以下示例。

 
 
 
  1. # The typical way
  2. if score > 90:
  3.     reward = "1000 dollars"
  4. else:
  5.     reward = "500 dollars"
  6. # Do this instead
  7. reward = "1000 dollars" if score > 90 else "500 dollars"

有時(shí),我們可以從已定義的函數(shù)中獲取一些數(shù)據(jù),并且可以利用這一點(diǎn)并編寫三元表達(dá)式的簡(jiǎn)單操作,如下所示。

 
 
 
  1. # Another possible scenario
  2. # You got a reward amount from somewhere else, but don't know if None/0 or not
  3. reward = reward_known or "500 dollars"
  4. # The above line of code is equivalent to below
  5. reward = reward_known if reward_known else "500 dollars"

5.帶文件對(duì)象的語(yǔ)句

我們經(jīng)常需要從文件讀取數(shù)據(jù)并將數(shù)據(jù)寫入文件。最常見的方法是使用內(nèi)置open()函數(shù)簡(jiǎn)單地打開文件,該函數(shù)會(huì)創(chuàng)建一個(gè)我們可以操作的文件對(duì)象。

 
 
 
  1. >>> # Create a text file that has the text: Hello World!
  2. ...
  3. ... # Open the file and append some new data
  4. ... text_file0 = open("hello_world.txt", "a")
  5. ... text_file0.write("Hello Python!")
  6. ...
  7. ... # Open the file again for something else
  8. ... text_file1 = open("hello_world.txt")
  9. ... print(text_file1.read())
  10. ...
  11. Hello World!

在前面的代碼片段中,我們從一個(gè)文本文件開始,該文件的文本為“ Hello World!”。然后,我們將一些新數(shù)據(jù)附加到文件中。但是,過(guò)了一會(huì)兒,我們想再次處理該文件。當(dāng)我們讀取文本文件時(shí),它仍然具有舊數(shù)據(jù)。換句話說(shuō),附加的文本不包括在文本文件中。

這是因?yàn)槲覀兪紫葲](méi)有關(guān)閉文件對(duì)象。如果不關(guān)閉文件,則無(wú)法保存更改。確實(shí),我們可以close()在文件對(duì)象上顯式調(diào)用該方法。但是,我們可以使用“ with”語(yǔ)句執(zhí)行此操作,該語(yǔ)句將自動(dòng)為我們關(guān)閉文件對(duì)象,如下所示。完成對(duì)文件的操作后,我們可以通過(guò)訪問(wèn)文件對(duì)象的closed屬性來(lái)驗(yàn)證文件已關(guān)閉。

 
 
 
  1. >>> with open("hello_world.txt", "a") as file:
  2. ...     file.write("Hello Python!")
  3. ...
  4. ... with open("hello_world.txt") as file:
  5. ...     print(file.read())
  6. ...
  7. ... print("Is file close?", file.closed)
  8. ...
  9. Hello World!Hello Python!Hello Python!
  10. Is file close? True

用更籠統(tǒng)的術(shù)語(yǔ)來(lái)說(shuō),with語(yǔ)句是在Python中使用上下文管理器的語(yǔ)法。上一個(gè)示例涉及文件操作,因?yàn)檫@些文件是共享資源,我們負(fù)責(zé)釋放這些資源。上下文管理器可以幫助我們完成工作。如前所示,文件操作結(jié)束后,將使用with語(yǔ)句自動(dòng)關(guān)閉文件。

6.評(píng)估多個(gè)條件

通常,我們需要評(píng)估多個(gè)條件。有幾種可能的方案。對(duì)于數(shù)值,我們可以對(duì)同一變量進(jìn)行多次比較。在這種情況下,我們可以鏈接這些比較。

 
 
 
  1. # Multiple Comparisons
  2. # The typical way
  3. if a < 4 and a > 1:
  4.     # do something here# Do this instead
  5. if 1 < a < 4:
  6.     # do somerthing here

在其他一些情況下,我們可以進(jìn)行多個(gè)相等比較,并且可以使用以下in關(guān)鍵字進(jìn)行成員測(cè)試。

 
 
 
  1. # The typical way
  2. if b == "Mon" or b == "Wed" or b == "Fri" or b == "Sun":
  3.     # do something here# Do this instead, you can also specify a tuple ("Mon", "Wed", "Fri", "Sun")
  4. if b in "Mon Wed Fri Sun".split():
  5.     # do something here

另一種技術(shù)是使用內(nèi)置的all()和any()函數(shù)用于評(píng)估多個(gè)條件的功能。具體而言,該all()函數(shù)將評(píng)估何時(shí)迭代中的元素全部為True,因此該函數(shù)適合于替換一系列AND邏輯比較。另一方面,該any()函數(shù)的計(jì)算結(jié)果為True當(dāng)?shù)械娜魏卧貫門rue,因此適合替換一系列OR邏輯運(yùn)算。相關(guān)示例如下所示。

 
 
 
  1. # The typical ways
  2. if a < 10 and b > 5 and c == 4:
  3.     # do somethingif a < 10 or b > 5 or c == 4:
  4.     # do something# Do these instead
  5. if all([a < 10, b > 5, c == 4]):
  6.     # do somethingif any([a < 10, b > 5, c == 4]):
  7.     # do something

7.在函數(shù)聲明中使用默認(rèn)值

在幾乎所有的Python項(xiàng)目中,大多數(shù)代碼都涉及創(chuàng)建和調(diào)用函數(shù)。換句話說(shuō),我們不斷處理函數(shù)聲明和重構(gòu)。在許多情況下,我們需要多次調(diào)用一個(gè)函數(shù)。根據(jù)不同的參數(shù)集,該功能將略有不同。但是,有時(shí)一組參數(shù)可能比其他一組更常用,在這種情況下,我們?cè)诼暶骱瘮?shù)時(shí)應(yīng)考慮設(shè)置默認(rèn)值??紤]下面的簡(jiǎn)單示例。

 
 
 
  1. # The original form:
  2. def generate_plot(data, image_name):
  3.     """This function creates a scatter plot for the data"""
  4.     # create the plot based on the data
  5.     ...
  6.     if image_name:
  7.         # save the image
  8.         ...# In many cases, we don't need to save the image
  9. generate_plot(data, None)# The one with a default value
  10. def generate_plot(data, image_name=None):
  11.     pass# Now, we can omit the second parameter
  12. generate_plot(data)

要注意的一件事是,如果在設(shè)置默認(rèn)值時(shí)要處理可變數(shù)據(jù)類型(例如列表,集合),請(qǐng)確保使用None而不是構(gòu)造函數(shù)(例如arg_name = [])。由于Python在定義的位置創(chuàng)建函數(shù)對(duì)象,因此提供的空白列表將被函數(shù)對(duì)象“卡住”。換句話說(shuō),調(diào)用函數(shù)對(duì)象時(shí)不會(huì)立即創(chuàng)建它。相反,我們將在內(nèi)存中處理相同的函數(shù)對(duì)象,包括其最初創(chuàng)建的默認(rèn)可變對(duì)象,這可能會(huì)導(dǎo)致意外行為。

8.使用計(jì)數(shù)器進(jìn)行元素計(jì)數(shù)

當(dāng)我們?cè)诹斜?、元組或字符串中有多個(gè)項(xiàng)目時(shí)(例如,多個(gè)字符),我們經(jīng)常想計(jì)算每項(xiàng)中有多少個(gè)元素。為此,可以為此功能編寫一些乏味的代碼。

 
 
 
  1. >>> words = ['an', 'boy', 'girl', 'an', 'boy', 'dog', 'cat', 'Dog', 'CAT', 'an','GIRL', 'AN', 'dog', 'cat', 'cat', 'bag', 'BAG', 'BOY', 'boy', 'an']
  2. ... unique_words = {x.lower() for x in set(words)}
  3. ... for word in unique_words:
  4. ...     print(f"* Count of {word}: {words.count(word)}")
  5. ...
  6. * Count of cat: 3
  7. * Count of bag: 1
  8. * Count of boy: 3
  9. * Count of dog: 2
  10. * Count of an: 5
  11. * Count of girl: 1

如上所示,我們首先必須創(chuàng)建一個(gè)僅包含唯一單詞的集合。然后,我們迭代單詞集,并使用該count()方法找出每個(gè)單詞的出現(xiàn)情況。但是,有一種更好的方法可以使用Counter類來(lái)完成此計(jì)數(shù)任務(wù)。

 
 
 
  1. >>> from collections import Counter
  2. ...
  3. ... word_counter = Counter(x.lower() for x in words)
  4. ... print("Word Counts:", word_counter)
  5. ...
  6. Word Counts: Counter({'an': 5, 'boy': 4, 'cat': 4, 'dog': 3, 'girl': 2, 'bag': 2})

該計(jì)數(shù)器類是在collections模塊中可用的。要使用該類,我們只需創(chuàng)建一個(gè)generator:,x.lower() for x in words每個(gè)項(xiàng)目都將被計(jì)數(shù)。如我們所見,Counter對(duì)象是類似dict的映射對(duì)象,每個(gè)鍵對(duì)應(yīng)于單詞列表的唯一項(xiàng),而值是這些項(xiàng)的計(jì)數(shù)。此外,如果我們有興趣找出單詞列表中最頻繁出現(xiàn)的項(xiàng)目,我們可以利用Counter對(duì)象的most_common()方法。以下代碼展示了這種用法。我們只需要指定一個(gè)整數(shù)(N),即可從列表中找出最頻繁的N個(gè)項(xiàng)目。附帶說(shuō)明,該對(duì)象還將與其他序列數(shù)據(jù)一起使用,例如字符串和元組。

 
 
 
  1. >>> # Find out the most common item
  2. ... print("Most Frequent:", word_counter.most_common(1))
  3. Most Frequent: [('an', 5)]
  4. >>> # Find out the most common 2 items
  5. ... print("Most Frequent:", word_counter.most_common(2))
  6. Most Frequent: [('an', 5), ('boy', 4)]

9.按不同的訂單要求排序

在許多項(xiàng)目中,對(duì)列表中的項(xiàng)目進(jìn)行排序是一項(xiàng)普遍的任務(wù)。最基本的排序基于數(shù)字或字母順序,我們可以使用內(nèi)置sorted()函數(shù)。默認(rèn)情況下,該sorted()函數(shù)將按升序?qū)α斜磉M(jìn)行排序(實(shí)際上,它可以是可迭代的)。如果將reverse參數(shù)指定為True,則可以按降序獲得項(xiàng)目。一些簡(jiǎn)單的用法如下所示。

 
 
 
  1. >>> # A list of numbers and strings
  2. ... numbers = [1, 3, 7, 2, 5, 4]
  3. ... words = ['yay', 'bill', 'zen', 'del']
  4. ... # Sort them
  5. ... print(sorted(numbers))
  6. ... print(sorted(words))
  7. ...
  8. [1, 2, 3, 4, 5, 7]
  9. ['bill', 'del', 'yay', 'zen']
  10. >>> # Sort them in descending order
  11. ... print(sorted(numbers, reverse=True))
  12. ... print(sorted(words, reverse=True))
  13. ...
  14. [7, 5, 4, 3, 2, 1]
  15. ['zen', 'yay', 'del', 'bill']

除了這些基本用法外,我們還可以指定key參數(shù),以便可以對(duì)復(fù)雜項(xiàng)進(jìn)行排序,例如元組列表??紤]這種情況的以下示例。

 
 
 
  1. >>> # Create a list of tuples
  2. ... grades = [('John', 95), ('Aaron', 99), ('Zack', 97), ('Don', 92), ('Jennifer', 100), ('Abby', 94), ('Zoe', 99), ('Dee', 93)]
  3. >>> # Sort by the grades, descending
  4. ... sorted(grades, key=lambda x: x[1], reverse=True)
  5. [('Jennifer', 100), ('Aaron', 99), ('Zoe', 99), ('Zack', 97), ('John', 95), ('Abby', 94), ('Dee', 93), ('Don', 92)]
  6. >>> # Sort by the name's initial letter, ascending
  7. ... sorted(grades, key=lambda x: x[0][0])
  8. [('Aaron', 99), ('Abby', 94), ('Don', 92), ('Dee', 93), ('John', 95), ('Jennifer', 100), ('Zack', 97), ('Zoe', 99)]

上面的代碼通過(guò)利用傳遞給key參數(shù)的lambda函數(shù),向我們展示了兩個(gè)高級(jí)排序的示例。第一個(gè)使用降序?qū)?xiàng)目進(jìn)行排序,第二個(gè)使用默認(rèn)的升序?qū)?xiàng)目進(jìn)行排序。我們要結(jié)合這兩個(gè)要求,如果考慮使用該reverse參數(shù),則可能會(huì)得到一個(gè)錯(cuò)誤的排序樹,因?yàn)槿绻麌L試按多個(gè)條件進(jìn)行排序,則反向參數(shù)將適用于所有參數(shù)。請(qǐng)參見下面的代碼段。

 
 
 
  1. >>> # Requirement: sort by name initial ascending, and by grades, descending
  2. ... # Both won't work
  3. ... sorted(grades, key=lambda x: (x[0][0], x[1]), reverse=True)
  4. [('Zoe', 99), ('Zack', 97), ('Jennifer', 100), ('John', 95), ('Dee', 93), ('Don', 92), ('Aaron', 99), ('Abby', 94)]
  5. >>> sorted(grades, key=lambda x: (x[0][0], x[1]), reverse=False)
  6. [('Abby', 94), ('Aaron', 99), ('Don', 92), ('Dee', 93), ('John', 95), ('Jennifer', 100), ('Zack', 97), ('Zoe', 99)]
  7. >>> # This will do the trick
  8. ... sorted(grades, key=lambda x: (x[0][0], -x[1]))
  9. [('Aaron', 99), ('Abby', 94), ('Dee', 93), ('Don', 92), ('Jennifer', 100), ('John', 95), ('Zoe', 99), ('Zack', 97)]

如您所見,通過(guò)將reverse參數(shù)設(shè)置為True或False,都無(wú)效。取而代之的是,技巧是取反分?jǐn)?shù),因此,當(dāng)您按默認(rèn)的升序排序時(shí),由于這些值的取反,分?jǐn)?shù)將反向排序。但是,此方法有一個(gè)警告,因?yàn)槿》粗荒苡糜跀?shù)字值,而不能用于字符串。

10.不要忘記defaultdict

字典是一種有效的數(shù)據(jù)類型,它使我們能夠以鍵值對(duì)的形式存儲(chǔ)數(shù)據(jù)。它要求所有鍵都是可哈希的,存儲(chǔ)這些數(shù)據(jù)可能涉及哈希表的使用。這種方法允許以O(shè)(1)效率實(shí)現(xiàn)數(shù)據(jù)檢索和插入。但是,應(yīng)注意,除了內(nèi)置的dict類型外,我們還有其他可用的字典。其中,我想討論defaultdict類型。與內(nèi)置dict類型不同,defaultdict允許我們?cè)O(shè)置默認(rèn)工廠函數(shù),該工廠函數(shù)在鍵不存在時(shí)創(chuàng)建元素。

 
 
 
  1. >>> student = {'name': "John", 'age': 18}
  2. ... student['gender']
  3. ...
  4. Traceback (most recent call last):
  5.   File "", line 2, in 
  6. KeyError: 'gender'

假設(shè)我們正在處理單詞,并且想要將與列表相同的字符分組,并且這些列表與作為鍵的字符相關(guān)聯(lián)。這是使用內(nèi)置dict類型的幼稚實(shí)現(xiàn)。值得注意的是,檢查dict對(duì)象是否具有l(wèi)etter鍵是至關(guān)重要的,因?yàn)槿绻I不存在,則調(diào)用該append()方法會(huì)引發(fā)KeyError異常。

 
 
 
  1. >>> letters = ["a", "a", "c", "d", "d", "c", "a", "b"]
  2. ... final_dict = {}
  3. ... for letter in letters:
  4. ...     if letter not in final_dict:
  5. ...         final_dict[letter] = []
  6. ...     final_dict[letter].append(letter)
  7. ...
  8. ... print("Final Dict:", final_dict)
  9. ...
  10. Final Dict: {'a': ['a', 'a', 'a'], 'c': ['c', 'c'], 'd': ['d', 'd'], 'b': ['b']}

讓我們看看如何使用defaultdict編寫更簡(jiǎn)潔的代碼。盡管該示例很簡(jiǎn)單,但是它只是為我們提供了有關(guān)defaultdict類的一些想法,這使我們不必處理字典對(duì)象中不存在的鍵。

 
 
 
  1. >>> from collections import defaultdict
  2. ...
  3. ... final_defaultdict = defaultdict(list)
  4. ... for letter in letters:
  5. ...     final_defaultdict[letter].append(letter)
  6. ...
  7. ... print("Final Default Dict:", final_defaultdict)
  8. ...
  9. Final Default Dict: defaultdict(, {'a': ['a', 'a', 'a'], 'c': ['c', 'c'], 'd': ['d', 'd'], 'b': ['b']})

結(jié)論

在閱讀本文之前,我們可能已經(jīng)了解了一些技巧,但是希望仍然對(duì)這些技巧有所了解。在項(xiàng)目中實(shí)踐這些慣用用法將使您的Python代碼更具可讀性和性能。


分享標(biāo)題:用這10個(gè)小技巧加速Python編程
轉(zhuǎn)載來(lái)于:http://www.5511xx.com/article/dphehdi.html