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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python初學(xué)者必學(xué)的20個(gè)重要技巧

本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)。

成都創(chuàng)新互聯(lián)專注于網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站開發(fā)。公司秉持“客戶至上,用心服務(wù)”的宗旨,從客戶的利益和觀點(diǎn)出發(fā),讓客戶在網(wǎng)絡(luò)營銷中找到自己的駐足之地。尊重和關(guān)懷每一位客戶,用嚴(yán)謹(jǐn)?shù)膽B(tài)度對待客戶,用專業(yè)的服務(wù)創(chuàng)造價(jià)值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。

Python是世界上使用最廣泛的編程語言之一,原因有很多:易理解、用途非常廣泛、包含了大量的模塊和庫等等。其中,簡潔和較高的可讀性使Python在所有軟件中非常突出。

作為一名數(shù)據(jù)科學(xué)家,筆者每天都在使用Python,這是筆者工作的一個(gè)重要部分。在這個(gè)過程中,筆者學(xué)會(huì)了一些驚人的技巧。

1. 交換價(jià)值

數(shù)字交換通常涉及存儲(chǔ)在臨時(shí)變量中的值。然而,我們可以通過使用Python技巧中的一行代碼,不需要使用瞬變變量就可以實(shí)現(xiàn)這一點(diǎn)。

 
 
 
 
  1. """valueswapping""" 
  2.            a, b=5, 10 
  3.            print(a, b)           a, bb= b, a           print(a, b)           output           10, 5 

2. 列表中所有項(xiàng)的一個(gè)字符串

必須對一個(gè)字符串列表進(jìn)行卷積時(shí),可以通過for循環(huán)來更新每一項(xiàng)以此連續(xù)不斷地執(zhí)行此操作。然而這樣做很麻煩,特別是在列表很長的情況下。在Python中,字符串是不可變的。因此,在每兩個(gè)拼接中,左字符串和右字符串都應(yīng)該被復(fù)制成一個(gè)新的字符串。

如下所示,使用join()函數(shù)是一種更為簡潔的解決方法:

 
 
 
 
  1. p = ["Python", "is", "a","popular", "language"] 
  2. print(" ".join(p))output 
  3. Python is a popular language 

3. 列表中最常見的元素

確定列表中最經(jīng)常出現(xiàn)的值。如果不同的項(xiàng)目以相同的方式出現(xiàn),則打印其中的一個(gè)。創(chuàng)建列表集以刪除冗余值。因此在集合中能找到每一項(xiàng)的最大事件數(shù),然后再考慮最大的。

 
 
 
 
  1. list1 = [0, 1, 2, 3, 3, 2, 3, 1, 4, 5, 4] 
  2. print(max(set(list1), key = list1.count))output 

4. 測試兩個(gè)字符串是否為相同字母異序詞

 
 
 
 
  1. defanagram(string_1,string_2):     
  2.                       """Test if the stringsare anagrams.     
  3.                       string_1: string     
  4.                       string_2: string     
  5.                       returns: boolean     
  6.                       """ 

解決上述問題,從而弄清楚兩個(gè)字符串是否是相同字母異序詞。給定兩個(gè)字符串string_1 和string_2,測試這兩個(gè)字符串是否互為相同字母異序詞。

 
 
 
 
  1. from collections importCounter 
  2.            defanagram(string_1,string_2):                    returnCounter(string_1) ==Counter(string_2)           anagram('pqrs','rqsp') 
  3.            True 
  4.            anagram('pqrs','rqqs') 
  5.            False 

圖源:unsplash

5. 逆轉(zhuǎn)字符串

切片是Python中的一種方便技巧,它還可以用于逆轉(zhuǎn)字符串中項(xiàng)的順序。

 
 
 
 
  1. # with slicing 
  2.        str ="PQRST" 
  3.        reverse_str = str[::-1] 
  4.        print(reverse_str)       Output       TSRQP 

6. 反轉(zhuǎn)列表

使用這種方法創(chuàng)建列表的副本,而且列表沒有按順序排序。要?jiǎng)?chuàng)建一個(gè)副本,需要更多的空間來容納所有現(xiàn)有的元素。

 
 
 
 
  1. # using slicing approach 
  2.         defReverse(lst):         lstlst1 = lst[::-1] 
  3.          return lst1 
  4.                  lst = [5, 6, 7, 8, 9, 10] 
  5.         print(Reverse(lst)) 
  6.         output 
  7.         [10, 9, 8, 7, 6, 5] 

7. 轉(zhuǎn)置矩陣

轉(zhuǎn)置矩陣意味著將列變換為行,反之亦然。使用Python,可以通過以下代碼與zip函數(shù)結(jié)合,并使用*工具解壓縮矩陣的轉(zhuǎn)置列表。

 
 
 
 
  1. mat=[(5,6,7),(8,9,10),(11,12,13),(14,15,16)] 
  2.                                              for row in mat: 
  3.                                               print(row) 
  4.                                              print("\n") 
  5.                                              t_mat=zip(*mat) 
  6.                                              for row in t_mat: 
  7.                                               print(row) 
  8.                                              output 
  9.                                              (5, 6, 7) 
  10.                                              (8, 9, 10) 
  11.                                              (11, 12, 13) 
  12.                                              (14, 15, 16) 
  13.                                              (5, 8, 11, 14) 
  14.                                              (6, 9, 12, 15) 
  15.                                              (7, 10, 13, 16) 

8. 鏈?zhǔn)奖容^

在編程中,測試兩個(gè)以上的條件是很正常的。假設(shè)需要測試以下內(nèi)容:

 
 
 
 
  1. p < q< r 

更聰明的做法確實(shí)是在Python中通過鏈?zhǔn)絹砭帉?。任?wù)鏈表示如下:

 
 
 
 
  1. if p< q< r: 
  2.     {.....} 

返回布爾值來比較判斷正確與否。示例如下:

 
 
 
 
  1. # chaining comparison 
  2.           a =3 
  3.           print(1< a<10) 
  4.           print(5< a<15) 
  5.           print(a <7< a*7<49) 
  6.           print(8> a<=6) 
  7.           print(3== a>2) 
  8.           output 
  9.           True 
  10.           False 
  11.           True 
  12.           True 
  13.           True 

9. ‘get’字典

下面是訪問Python字典中鍵值的傳統(tǒng)方法:

 
 
 
 
  1. dict = {"P":1, "Q":2} 
  2. print(dict["P"]) 
  3. print(dict["R"]) 

代碼的第三行會(huì)產(chǎn)生一個(gè)關(guān)鍵錯(cuò)誤:

 
 
 
 
  1. Traceback (most recent call last): 
  2.   File ".\dict.py", line 3, in 
  3.     print (dict["R"]) 
  4. KeyError: 'R' 

為了防止這種情況的出現(xiàn),可以使用get()函數(shù)。當(dāng)在字典中可用時(shí),該技巧可以提供特定鍵的值。若不可用,則不會(huì)返回任何值(如果 get()只使用了一個(gè)參數(shù))。

 
 
 
 
  1. dict = {"P":1, "Q":2} 
  2.        print(dict.get("P")) 
  3.        print(dict.get("R")) 
  4.        print(dict.get("R","Unavailable! ")) 
  5.        output       1 
  6.        None 
  7.        Unavailable! 

10. 按值給字典排序

排序在日常編程中一直是很有用的。Python中的字典在許多應(yīng)用程序中被廣泛使用,范圍從競爭領(lǐng)域到開發(fā)人員領(lǐng)域。構(gòu)造一本字典,并按字母順序顯示所有鍵,按值列出按字母順序排序的鍵和值。

 
 
 
 
  1. defdict():  
  2.        keyval ={}       # Initializing the value       keyval[3] =48 
  3.        keyval[2] =6 
  4.        keyval[5] =10 
  5.        keyval[1] =22 
  6.        keyval[6] =15 
  7.        keyval[4] =245 
  8.        print ("Task3:-\nKeys and Values sorted", 
  9.        "in alphabetical order by thevalue") 
  10.        # Remember this would arrange inaphabetical sequence       # Convert it to float to mathematicalpurposes       print(sorted(keyval.elements(), key = 
  11.           lambda k_val:(k_val[1], k_val[0]))) 
  12.        defmain():        dict()                  if __name__=="__main__":  
  13.         main()       output 
  14.        [(2, 6), (5, 10), (6, 15), (1, 22), (3, 48), (4, 245)] 

圖源:unsplash

11. 列表推導(dǎo)

要從不同的迭代中構(gòu)造新的列表,需要使用列表推導(dǎo)。由于列表推導(dǎo)式產(chǎn)生列表,因此它們包含表達(dá)式的括號(hào),該表達(dá)式將被執(zhí)行到每個(gè)元素。推導(dǎo)列表更簡單,因?yàn)镻ython解釋器旨在檢測循環(huán)中的循環(huán)模式。

 
 
 
 
  1. # Multiplying each item in the list with 3 
  2.            list1 = [2,4,6,8] 
  3.            list2 = [3*p for p in list1] 
  4.            print(list2) 
  5.            [6,12,18,24] 

12. 執(zhí)行部分計(jì)劃所花費(fèi)的時(shí)間

這個(gè)重點(diǎn)展示了計(jì)算程序或程序的一部分執(zhí)行所花費(fèi)的時(shí)間。計(jì)算時(shí)間有助于優(yōu)化Python腳本,使其執(zhí)行得更好。

 
 
 
 
  1. import time 
  2.       initial_Time = time.time() 
  3.       # Program to test follows      x, y=5,6 
  4.       z = x+ y      # Program to test ending      ending_Time = time.time() 
  5.       Time_lapsed_in_Micro_sec= (ending_Time- initial_Time)*(10**6) 
  6.       print(" Timelapsed in micro_seconds: {0} ms").format(Time_lapsed_in_Micro_sec) 

13. 合并字典

這是Python中的一個(gè)重要技巧:使用一個(gè)表達(dá)式來合并兩個(gè)字典并將結(jié)果存儲(chǔ)在第三個(gè)字典中。單個(gè)表達(dá)式是 **,這不會(huì)影響其他兩個(gè)字典。**表示參數(shù)是一個(gè)字典。使用**是一種快捷方式,這樣就可以通過使用字典直接向函數(shù)傳遞多個(gè)參數(shù)。

使用這個(gè)函數(shù),首先將第一個(gè)字典的所有元素傳遞給第三個(gè)字典,然后將第二個(gè)字典傳遞給第三個(gè)字典。這將替換第一個(gè)字典的重復(fù)鍵

 
 
 
 
  1. dic1 = {'men': 6, 'boy': 5} 
  2.        dic2 = {'boy': 3, 'girl': 5} 
  3.        merged_dic = {**dic1, **dic2} 
  4.        print(merged_dic) 
  5.        Output 
  6.        {'men': 6, 'boy': 3, 'girl': 5} 

14. 數(shù)字化

下面是使用了 map()函數(shù)、列表推導(dǎo)以及一種更簡單的數(shù)字化方法編寫的代碼:

 
 
 
 
  1. number =2468 
  2.       # with map 
  3.       digit_list =list(map(int, str(number))) 
  4.       print(digit_list)      [2, 4, 6, 8] 
  5.       # with list comprehension 
  6.       digit_list = [int(a) for a instr(number)] 
  7.       print(digit_list)      [2, 4, 6, 8] 
  8.       # Even simpler approach      digit_list =list(str(number)) 
  9.       print(digit_list)      [2, 4, 6, 8] 

15. 測試獨(dú)特性

一些列表操作要求測試列表中的所有項(xiàng)是否完全不同。嘗試在列表中執(zhí)行集合操作時(shí),通常會(huì)發(fā)生這種情況,這個(gè)特殊的實(shí)用程序在這時(shí)必不可少。

 
 
 
 
  1. defuniq(list): 
  2.               iflen(list)==len(set(list)):                   print("totalitems are unique") 
  3.               else: 
  4.                    print("Listincludes duplicate item") 
  5.            uniq([0,2,4,6]) 
  6.            total items are unique           uniq([1,3,3,5]) 
  7.            List includesduplicate item 

16. 使用枚舉

在循環(huán)中使用枚舉數(shù)可以快速查找索引:

 
 
 
 
  1. sample_list = [4, 5, 6] 
  2.            for j, item inenumerate(sample_list): 
  3.              print(j, ': ', item) 
  4.            Output 
  5.            0 : 4 
  6.            1 : 5 
  7.            2 : 6 

17. 在一行中計(jì)算任意數(shù)的階乘

此技巧可以幫助你在一行中找到一個(gè)給定數(shù)的階乘:

 
 
 
 
  1. import functools 
  2.          fact = (lambda i: functools.reduce(int.__mul__, range(1,i+1),1)(4) 
  3.          print(fact) 
  4.          Output         24 

18. 返回幾個(gè)函數(shù)的元素

許多計(jì)算機(jī)語言都不提供這個(gè)功能。但是對于Python,函數(shù)會(huì)產(chǎn)生幾個(gè)元素。查看下面的實(shí)例,了解它是如何執(zhí)行的:

 
 
 
 
  1. # function returning several elements. 
  2.          defa(): 
  3.              return5, 6, 7, 8 
  4.          # Calling the abovefunction. 
  5.          w, x, y, z=a() 
  6.          print(w, x, y, z) 
  7.          Output 
  8.          5678 

19. 加入一個(gè)真正的Python切換大小寫語句

下面是使用字典復(fù)制大小寫轉(zhuǎn)換結(jié)構(gòu)的腳本:

 
 
 
 
  1. defaswitch(a): 
  2.              returnaswitch._system_dic.get(a, None) 
  3.            aswitch._system_dic = {'mangoes': 4, 'apples': 6, 'oranges': 8} 
  4.            print(aswitch('default')) 
  5.            print(aswitch('oranges')) 
  6.            Output           None 
  7.            8 

20. 使用splat操作符解包函數(shù)參數(shù)

splat操作符提供了一種解包參數(shù)列表的有效方法:

 
 
 
 
  1. deftest(a, b, c): 
  2.          print(p, q, r) 
  3.        test_Dic = {'a': 4, 'b': 5, 'c': 6} 
  4.        test_List = [10, 11, 12]       test(*test_Dic) 
  5.        test(**test_Dic) 
  6.        test(*test_List) 
  7.        #1-> p q r 
  8.        #2-> 4 5 6 
  9.        #3-> 10 11 12 

掌握這些小技巧,快速有效地完成Python任務(wù)。


新聞名稱:Python初學(xué)者必學(xué)的20個(gè)重要技巧
網(wǎng)頁URL:http://m.5511xx.com/article/dhcjcij.html