自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python初學(xué)者必學(xué)的20個(gè)重要技巧

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

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

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

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

[[340836]]

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è)字符串

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

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

  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. 測(cè)試兩個(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,測(cè)試這兩個(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 

[[340837]]

圖源: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)奖容^

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

  1. < q< r 

更聰明的做法確實(shí)是在Python中通過鏈?zhǔn)絹砭帉憽H蝿?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)用程序中被廣泛使用,范圍從競(jìng)爭(zhē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)] 

Python初學(xué)者必學(xué)的20個(gè)重要技巧

圖源:unsplash

11. 列表推導(dǎo)

要從不同的迭代中構(gòu)造新的列表,需要使用列表推導(dǎo)。由于列表推導(dǎo)式產(chǎn)生列表,因此它們包含表達(dá)式的括號(hào),該表達(dá)式將被執(zhí)行到每個(gè)元素。推導(dǎo)列表更簡(jiǎn)單,因?yàn)镻ython解釋器旨在檢測(cè)循環(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)以及一種更簡(jiǎn)單的數(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. 測(cè)試獨(dú)特性

一些列表操作要求測(cè)試列表中的所有項(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è)功能。但是對(duì)于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ù)。

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2011-07-26 16:08:40

iPhone 應(yīng)用程序

2024-08-17 12:14:06

2011-08-10 19:16:50

Objective-C變量

2020-12-07 10:55:16

編程學(xué)習(xí)技術(shù)

2022-07-22 15:55:32

Python代碼語言

2024-03-11 18:17:18

Python字符串分隔符

2017-10-30 10:12:27

安卓開發(fā)初學(xué)者技巧

2010-09-01 09:23:53

DIV CSS

2010-03-10 17:09:26

Python語言

2020-03-02 14:20:46

PythonGitHub編程語言

2011-09-16 09:38:19

Emacs

2022-04-24 15:21:01

MarkdownHTML

2011-04-12 10:13:24

2024-05-08 12:41:29

Python編程語言

2014-01-03 14:09:57

Git學(xué)習(xí)

2010-08-24 08:28:19

JavaScript

2014-03-12 10:11:57

Python設(shè)計(jì)模式

2020-09-06 22:04:48

Python運(yùn)算符開發(fā)

2020-03-01 14:57:47

Python編程函數(shù)

2015-07-20 13:56:59

SDN
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)