欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python函數enumerate,operator和Counter使用技巧實例小結

 更新時間:2020年02月22日 08:44:45   作者:Nicoder  
這篇文章主要介紹了python函數enumerate,operator和Counter使用技巧,結合實例形式總結分析了python內置函數enumerate,operator和Counter基本功能、原理、用法及操作注意事項,需要的朋友可以參考下

本文實例講述了python函數enumerate,operator和Counter使用技巧。分享給大家供大家參考,具體如下:

最近看人家的代碼,發(fā)現了很多python內置的函數和數據結構,可以大大減少我們的代碼量(而且人家是優(yōu)化過的)。python以簡潔和強大的庫著稱,要是什么都自己寫的話,太不python了。這里介紹常用的能大大提高我們生活幸福度的小技巧:

enumerate()

這個函數主要用于既要遍歷元素又要記下索引。通常我們都會這樣寫(不能再笨拙了):

for i in range(0,len(list)):
  print i,list[i]

使用enumerate:

for index,text in enumerate(list):
  print index,text

itemgetter()

這個和下面的函數在operator庫中,通常用在排序中。例如要對一個tuple的列表進行排序,找到第二個值最小的那個tuple。我一開始這樣做:

list_of_tuples = [(1,2), (3,4), (5,0)]
min_tuple = None
minimum = sys.maxint
for pair in list_of_tuples:
  x,y = pair
  if y < minimum:
    min_tuple = pair
print min_tuple

后來,進化了,這樣做:

def snd(pair):
  x,y = pair
  return y
list_of_tuples = [(1,2), (3,4), (5,0)]
min(list_of_tuples, key=snd)

這樣看起來好多了,可是我發(fā)現人家的代碼里是這樣做的:

import operator
list_of_tuples = [(1,2), (3,4), (5,0)]
min(list_of_tuples, key=operator.itemgetter(1)) #use 2nd value

attgetter()

這個函數和上面的函數很像,不同的是,上面是用索引獲取對應值,而這里使用屬性來獲取對應值,就像dict一樣。

假如我們有個類Student:

class Student(object):
  def __init__(self, id, name, marks):
    self.id = id
      self.name = name
      self.marks = marks
  def __str__(self):
    return '%s has marks %s' %(self.name, self.marks)

我們有一個學生的實例的列表students,需要從里面找到分最高的。最簡介的做法是:

students = [ Student(0, 'Foo', 30), Student(1, 'Bar', 95), Student(2, 'Baz', 80)]
best_student = max(students, key=operator.attrgetter('marks')) # don't forget the quotes

collections.Counter()

一看這個函數名,就知道是用來統(tǒng)計個數的~返回的是一個dict,key是各個元素,value是對應的個數。一開始,我并不知道這個函數,都是這樣統(tǒng)計的:

d={}
for text in list:
  if not text in d.keys():
    d[text]=1
  else:
    d[text]+=1
print d

現在,直接一句話:

counter=collections.Counter(list)
print counter

之后獲取各元素的個數,使用方法同一般的dict。如果增加元素e1,e2和對應個數,直接counter.update({e1=4,e2=3})就可以。

此外,這個Counter不僅用來數數,還有好多函數方便各種操作,例如:

  • counter.most_common(n) 返回數目最多的前n個元素和對應個數
  • a.substract(b) 返回一個Counter,Counter a減去Counter b,多的元素個數為正值,少的元素個數為負值
  • counter.elements() 返回一個element列表,其中每個元素有多少個就重復多少次
  • counter.values() 返回個數列表,通常配合sum(counter.values())
  • counter.clear() 重置counter
  • del counter[e]刪除元素e和它的紀錄
  • 算數操作:+和- ,對應元素個數加減;|和&,兩個counter的并集和交集

關于Python相關內容感興趣的讀者可查看本站專題:《Python函數使用技巧總結》、《Python面向對象程序設計入門與進階教程》、《Python數據結構與算法教程》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結》及《Python入門與進階經典教程

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • python3實現彈彈球小游戲

    python3實現彈彈球小游戲

    這篇文章主要介紹了python3實現彈彈球小游戲,圖形用戶界面tkinter,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • pandas如何給DataFrame新增列并賦值

    pandas如何給DataFrame新增列并賦值

    這篇文章主要介紹了pandas如何給DataFrame新增列并賦值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python實現各進制轉換的總結大全

    python實現各進制轉換的總結大全

    這篇文章主要給大家總結了python實現各進制轉換的相關資料,其中包括字符串與十六進制轉換、內置函數hex()與進制互轉等相關內容,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • 13個你可能未使用過的Python特性分享

    13個你可能未使用過的Python特性分享

    Python?是頂級編程語言之一,它具有許多程序員從未使用過的許多隱藏功能。在這篇博客中,將和大家分享一下你可能從未使用過的13?個?Python?特性,感興趣的可以學習一下
    2022-11-11
  • Python 正則表達式 re . 符號示例詳解

    Python 正則表達式 re . 符號示例詳解

    (點號) 在默認模式下,匹配除換行符以外的任意字符, 如果指定了 flags 參數 DOTALL ,它將匹配包括換行符在內的任意字符,下面通過示例代碼介紹Python 正則表達式 re . 符號,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Python 虛擬環(huán)境工作原理解析

    Python 虛擬環(huán)境工作原理解析

    這篇文章主要介紹了Python 虛擬環(huán)境工作原理解析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 自定義python日志文件系統(tǒng)實例

    自定義python日志文件系統(tǒng)實例

    這篇文章主要介紹了自定義python日志文件系統(tǒng)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python使用正則搜索字符串或文件中的浮點數代碼實例

    python使用正則搜索字符串或文件中的浮點數代碼實例

    這篇文章主要介紹了python使用正則搜索字符串或文件中的浮點數代碼實例,同時包含一個讀寫到文件功能,需要的朋友可以參考下
    2014-07-07
  • python利用urllib和urllib2訪問http的GET/POST詳解

    python利用urllib和urllib2訪問http的GET/POST詳解

    urllib模塊提供的上層接口,使我們可以像讀取本地文件一樣讀取www和ftp上的數據。下面這篇文章主要給大家介紹了關于python如何利用urllib和urllib2訪問http的GET/POST的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • python實現接口并發(fā)測試腳本

    python實現接口并發(fā)測試腳本

    這篇文章主要為大家詳細介紹了python實現接口并發(fā)測試腳本,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06

最新評論