小伙伴們好,此篇文章主要是跟大家分享13個(gè)Python中非常有利的代碼片段,有興趣的同學(xué)們趕緊來看一下吧,對(duì)大家有所幫助得話不要忘記保存以下
ListsSnippets
大家從最常見的算法設(shè)計(jì)目錄剛開始
1.把兩個(gè)目錄合拼成詞典
假定大家在Python中有兩種目錄,我希望把它們合并為詞典方式,其中的一個(gè)目錄的項(xiàng)做為詞典的鍵,另外做為值。這就是在用Python編寫代碼時(shí)經(jīng)常碰到的一個(gè)很常見的現(xiàn)象
但為了解決這個(gè)問題,大家應(yīng)該考慮好多個(gè)限定,比如2個(gè)目錄大小,2個(gè)頁面上原素種類,及其在其中是否存在重復(fù)原素,特別是我們將要應(yīng)用元素做為key時(shí)。我們通過使用zip等內(nèi)置函數(shù)來解決這個(gè)問題
keys_list=['A','B','C'] values_list=['blue','red','bold'] #Thereare3waystoconvertthesetwolistsintoadictionary #1-UsingPython'szip,dictfunctionz dict_method_1=dict(zip(keys_list,values_list)) #2-Usingthezipfunctionwithdictionarycomprehensions dict_method_2={key:valueforkey,valueinzip(keys_list,values_list)} #3-Usingthezipfunctionwithaloop items_tuples=zip(keys_list,values_list) dict_method_3={} forkey,valueinitems_tuples: ifkeyindict_method_3: pass#Toavoidrepeatingkeys. else: dict_method_3[key]=value
2.把兩個(gè)或幾個(gè)目錄合并為一個(gè)1個(gè)目錄的目錄
另外比較常見的目標(biāo)就是在我們有兩種或者更多目錄時(shí),我希望把它們所有獲取到一個(gè)頁面上,在其中比較小目錄的所有首項(xiàng)組成比較大頁面上第一個(gè)目錄
比如,假如我們有4個(gè)目錄[1,2,3],['a','b','c'],['h','e','y']和[4,5,6],他們想要為這幾個(gè)目錄構(gòu)建一個(gè)新目錄;它無疑是[[1,'a','h',4],[2,'b','e',5],[3,'c','y',6]]
defmerge(*args,missing_val=None): #missing_valwillbeusedwhenoneofthesmallerlistsisshorterthamtheothers. #Getthemaximumlengthwithinthesmallerlists. max_length=max([len(lst)forlstinargs]) outList=[] foriinrange(max_length): result.append([args[k]ifi returnoutList
3.對(duì)詞典目錄進(jìn)行篩選
這一組平時(shí)目錄目標(biāo)就是排列每日任務(wù),依據(jù)頁面上涉及到的原素基本數(shù)據(jù)類型,我們將要選用略微各種方式對(duì)這種進(jìn)行篩選。
dicts_lists=[ { "Name":"James", "Age":20, }, { "Name":"May", "Age":14, }, { "Name":"Katy", "Age":23, } ] #Therearedifferentwaystosortthatlist #1-Usingthesort/sortedfunctionbasedontheage dicts_lists.sort(key=lambdaitem:item.get("Age")) #2-Usingitemgettermodulebasedonname fromoperatorimportitemgetter f=itemgetter('Name') dicts_lists.sort(key=f)
4.對(duì)字符串?dāng)?shù)組目錄進(jìn)行篩選
我們通常遭遇1個(gè)字符串?dāng)?shù)組的目錄,我們應(yīng)該按字母順序、長短或他們想要或我們自己的應(yīng)用軟件必須的所有外在因素對(duì)這種目錄進(jìn)行篩選
my_list=["blue","red","green"] #1-Usingsortorsrteddirectlyorwithspecifckeys my_list.sort()#sortsalphabeticallyorinanascendingorderfornumericdata my_list=sorted(my_list,key=len)#sortsthelistbasedonthelengthofthestringsfromshortesttolongest. #Youcanusereverse=Truetofliptheorder #2-Usinglocaleandfunctools importlocale fromfunctoolsimportcmp_to_key my_list=sorted(my_list,key=cmp_to_key(locale.strcoll))
5.依據(jù)另外一個(gè)目錄對(duì)目錄進(jìn)行篩選
有時(shí)候,我們也許需要使用1個(gè)目錄的方式對(duì)另外一個(gè)目錄進(jìn)行篩選,因而,我們將要有一組數(shù)字目錄(檢索)跟一個(gè)我們想要使用這個(gè)檢索進(jìn)行篩選的目錄
a=['blue','green','orange','purple','yellow'] b=[3,2,5,4,1] #Use list comprehensions to sort these lists sortedList=[val for(_,val)in sorted(zip(b,a),key=lambda x: x[0])]
6.將目錄投射到詞典
目錄代碼片段最后一個(gè)每日任務(wù),假如已知1個(gè)目錄并把它投射到詞典中,換句話說,我們想要將我們自己的目錄轉(zhuǎn)換成含有數(shù)字鍵盤的詞典
mylist=['blue','orange','green'] #Map the list into a dict using the map,zip and dict functions mapped_dict=dict(zip(itr,map(fn,itr))) DictionarySnippets
如今處理過的數(shù)據(jù)類型是詞典
7.合拼2個(gè)或幾個(gè)詞典
假定大家有兩種或幾個(gè)詞典,而且我希望把它們?nèi)亢喜?個(gè)具備唯一鍵的詞典
from collections import defaultdict #merge two or more dicts using the collections module def merge_dicts(*dicts): mdict=defaultdict(list) for dict in dicts: for key in dict: res[key].append(d[key]) return dict(mdict)
8.旋轉(zhuǎn)詞典
1個(gè)較為常見的詞典目標(biāo)就是假如我們有個(gè)詞典而且必須旋轉(zhuǎn)他的鍵合值,鍵將成為值,而值將成為鍵
在我們這么做時(shí),我們應(yīng)該保證并沒有反復(fù)鍵。值能夠反復(fù),但鍵不可以,以確保全部新鍵全是可以hashable的
my_dict={ "brand":"Ford", "model":"Mustang", "year":1964 } #Invert the dictionary based on its content #1-If we know all values are unique. my_inverted_dict=dict(map(reversed,my_dict.items())) #2-If non-unique values exist from collections import defaultdict my_inverted_dict=defaultdict(list) {my_inverted_dict[v].append(k)for k,v in my_dict.items()} #3-If any of the values are not hashable my_dict={value:key for key in my_inverted_dict for value in my_inverted_dict[key]} StringSnippets
接著是字符串?dāng)?shù)組的處理方法
9.使用f字符串?dāng)?shù)組
格式化字符串很有可能就是我們幾乎天天必須完成一項(xiàng)工作,在Python中有很多種方法來格式化字符串,使用f字符串?dāng)?shù)組是很不錯(cuò)的挑選
#Formatting strings with f string. str_val='books' num_val=15 print(f'{num_val}{str_val}')#15 books print(f'{num_val%2=}')#1 print(f'{str_val!r}')#books #Dealing with floats price_val=5.18362 print(f'{price_val:.2f}')#5.18 #Formatting dates from datetime import datetime; date_val=datetime.utcnow() print(f'{date_val=:%Y-%m-%d}')#date_val=2021-09-24
10.查驗(yàn)簽串的
一個(gè)較為常見的任務(wù)是查驗(yàn)字符串?dāng)?shù)組能否在與字符串?dāng)?shù)組頁面上
addresses=["123 Elm Street","531 Oak Street","678 Maple Street"] street="Elm Street" #The top 2 methods to check if street in any of the items in the addresses list #1-Using the find method for address in addresses: if address.find(street)>=0: print(address) #2-Using the"in"keyword for address in addresses: if street in address: print(address)
11.以字節(jié)數(shù)為基準(zhǔn)獲取字符串大小
有時(shí)候,尤其是在搭建運(yùn)行內(nèi)存重要應(yīng)用軟件時(shí),大家要搞清楚我們自己的字符串?dāng)?shù)組用了是多少運(yùn)行內(nèi)存
str1="hello" str2="????" def str_size(s): return len(s.encode('utf-8')) str_size(str1) str_size(str2) Input/Outputoperations
最終我們來看一下輸出等方面的代碼片段
12.查驗(yàn)文檔存不存在
在計(jì)算機(jī)科學(xué)和大多數(shù)別的應(yīng)用軟件中,大家經(jīng)常要文本文件中獲取數(shù)據(jù)或者向在其中載入數(shù)據(jù)信息,但是做到這些,我們應(yīng)該查驗(yàn)文檔存不存在,因而,我們應(yīng)該保證編碼
不會(huì)因?yàn)镮O不正確而停止
#Checking if a file exists in two ways #1-Using the OS module import os exists=os.path.isfile('/path/to/file') #2-Use the pathlib module for a better performance from pathlib import Path config=Path('/path/to/file') if config.is_file(): pass
13.分析excel表
另外一種非常普遍文件互動(dòng)是以excel表中解析數(shù)據(jù),大家應(yīng)用CSV控制模塊來幫我們高效地實(shí)行該每日任務(wù)
import csv csv_mapping_list=[] with open("/path/to/data.csv")as my_data: csv_reader=csv.reader(my_data,delimiter=",") line_count=0 for line in csv_reader: if line_count==0: header=line else: row_dict={key:value for key,value in zip(header,line)} csv_mapping_list.append(row_dict) line_count+=1
好啦,我們一起學(xué)了13個(gè)代碼片段,這種精彩片段簡(jiǎn)易、簡(jiǎn)潔明了且高效率,不管我們?cè)谀男?yīng)用軟件行業(yè)工作中,最終會(huì)在對(duì)應(yīng)的Python工程中最少應(yīng)用其中一個(gè),因此個(gè)人收藏就是一個(gè)不錯(cuò)的選擇!
綜上所述,這些文章就給大家介紹到這里了,希望可以給大家?guī)韼椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/128843.html
摘要:在樹中,文檔片段被其所有的孩子所代替。因?yàn)槲臋n片段存在于內(nèi)存中,并不在樹中,所以將子元素插入到文檔片段時(shí)不會(huì)引起頁面回流對(duì)元素位置和幾何上的計(jì)算。因此,使用文檔片段通常會(huì)起到優(yōu)化性能的作用。在里說過接口表示文檔的一部分或一段。 DocumentFragments 是DOM節(jié)點(diǎn)。它們不是主DOM樹的一部分。通常的用例是創(chuàng)建文檔片段,將元素附加到文檔片段,然后將文檔片段附加到DOM樹。在D...
摘要:為什么標(biāo)準(zhǔn)化對(duì)網(wǎng)絡(luò)運(yùn)營有利創(chuàng)新而不是阻礙標(biāo)準(zhǔn)化有時(shí)被視為對(duì)創(chuàng)新的攻擊。然而,以標(biāo)準(zhǔn)化為契機(jī),為自動(dòng)化系統(tǒng)和軟件建立堅(jiān)實(shí)的基礎(chǔ),有利于企業(yè)的發(fā)展。為什么標(biāo)準(zhǔn)化對(duì)網(wǎng)絡(luò)運(yùn)營有利:創(chuàng)新而不是阻礙標(biāo)準(zhǔn)化有時(shí)被視為對(duì)創(chuàng)新的攻擊。被迫放棄多語種自助餐,采用更有限的菜單,聽起來總是令人窒息。這可能是因?yàn)闃?biāo)準(zhǔn)化通常與監(jiān)管合規(guī)標(biāo)準(zhǔn)有關(guān),這些標(biāo)準(zhǔn)的官方名稱聽起來像是ISO 8076.905E,并與檢查表、審計(jì)員和...
摘要:大多數(shù)待遇豐厚的開發(fā)職位都要求開發(fā)者精通多線程技術(shù)并且有豐富的程序開發(fā)調(diào)試優(yōu)化經(jīng)驗(yàn),所以線程相關(guān)的問題在面試中經(jīng)常會(huì)被提到。將對(duì)象編碼為字節(jié)流稱之為序列化,反之將字節(jié)流重建成對(duì)象稱之為反序列化。 JVM 內(nèi)存溢出實(shí)例 - 實(shí)戰(zhàn) JVM(二) 介紹 JVM 內(nèi)存溢出產(chǎn)生情況分析 Java - 注解詳解 詳細(xì)介紹 Java 注解的使用,有利于學(xué)習(xí)編譯時(shí)注解 Java 程序員快速上手 Kot...
摘要:為什么標(biāo)準(zhǔn)化對(duì)網(wǎng)絡(luò)運(yùn)營有利創(chuàng)新而不是阻礙標(biāo)準(zhǔn)化有時(shí)被視為對(duì)創(chuàng)新的攻擊。然而,以標(biāo)準(zhǔn)化為契機(jī),為自動(dòng)化系統(tǒng)和軟件建立堅(jiān)實(shí)的基礎(chǔ),有利于企業(yè)的發(fā)展。為什么標(biāo)準(zhǔn)化對(duì)網(wǎng)絡(luò)運(yùn)營有利:創(chuàng)新而不是阻礙標(biāo)準(zhǔn)化有時(shí)被視為對(duì)創(chuàng)新的攻擊。被迫放棄多語種自助餐,采用更有限的菜單,聽起來總是令人窒息。這可能是因?yàn)闃?biāo)準(zhǔn)化通常與監(jiān)管合規(guī)標(biāo)準(zhǔn)有關(guān),這些標(biāo)準(zhǔn)的官方名稱聽起來像是ISO 8076.905E,并與檢查表、審計(jì)員和...
閱讀 956·2023-01-14 11:38
閱讀 936·2023-01-14 11:04
閱讀 787·2023-01-14 10:48
閱讀 2157·2023-01-14 10:34
閱讀 1005·2023-01-14 10:24
閱讀 895·2023-01-14 10:18
閱讀 545·2023-01-14 10:09
閱讀 622·2023-01-14 10:02