天天看點

Python對list操作的一些小技巧

 由于要搞數學模組化,于是從熟悉已久的C++轉戰Python。雖然才上手,但是Python的文法糖就讓我大呼過瘾。不得不說相比于C/C++,Python對于資料的處理非常友善,僅僅是清單的操作就有許多友善的技巧。現列舉如下:

 Python可以完成對許多資料結構的宏觀操作,比如已知一個清單[1,2,3,4,5],想求得另一個清單。使其每個元素為原清單的兩倍,即[2,4,6,8,10]在C/C++語言裡,你可能需要周遊原清單所有元素,并将每個元素乘2,依次加入新的清單,而Python具有清單推導式功能,使這個操作異常簡單:

 如果我要篩選原清單裡面為奇數的元素,可以如此:

  我們也可以結合函數來使用清單推導式,比如新清單元素為原清單每個元素的平方:

 清單推導式也支援布爾值,比如如果我們想判斷原清單裡面的元素的奇偶性,可以這樣:

 不過,對于一些複雜的清單轉換,清單推導式就力不從心了,比如我們一直一個人名清單[‘tOm’,‘jacK’,‘RICK’],我們需要把它規範化,即首字母大寫,其餘字母小寫,轉化為清單[‘Tom’,‘Jack’,‘Rick’],那麼我們怎麼做呢?Python提供了map映射結構,讓我們可以求得原清單的某種映射清單,比如要處理這個姓名規整問題,我們可以先定義一個規整函數:

 然後調用map結構,求得map映射,并轉換為list結構

 注意,map結構的第一個參數是函數名,也可以支援匿名函數,比如這樣用:

 Python的清單可以按照你的意願進行排序,非常友善,格式為×××.sort(key=‘×××’),其中key='×××’中的×××為一個函數(在Python裡,函數也是對象),

 如果我們想按照字元串長度對一個字元串集進行排序:

 如果要求稍微複雜一些,我們可以運用匿名函數,比如我們想字元串中不同字母的數量對一個字元串集進行排序:

 在數學模組化的過程中,我經常會把一些點坐标的x,y坐标值用不同的清單分開儲存,但有時我們有需要把他們合并成一個元素為元素的清單,比如x坐标清單[1,2,3],y坐标清單[4,5,6],我們想得到[(1,4),(2,5),(3,6)],可以這樣做:

 不過拆分的方式略顯魔幻

 好了,我的Python學習分享就在這裡,如果在我的學習過程中還發現一些有用的技巧,我還會繼續分享的O(∩_∩)O~

數學是符号的藝術,音樂是上界的語言。