最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python函數(shù)enumerate,operator和Counter使用技巧實(shí)例小結(jié)

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

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

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

enumerate()

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

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

使用enumerate:

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

itemgetter()

這個(gè)和下面的函數(shù)在operator庫(kù)中,通常用在排序中。例如要對(duì)一個(gè)tuple的列表進(jìn)行排序,找到第二個(gè)值最小的那個(gè)tuple。我一開(kāi)始這樣做:

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

后來(lái),進(jìn)化了,這樣做:

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

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

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

attgetter()

這個(gè)函數(shù)和上面的函數(shù)很像,不同的是,上面是用索引獲取對(duì)應(yīng)值,而這里使用屬性來(lái)獲取對(duì)應(yīng)值,就像dict一樣。

假如我們有個(gè)類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)

我們有一個(gè)學(xué)生的實(shí)例的列表students,需要從里面找到分最高的。最簡(jiǎn)介的做法是:

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()

一看這個(gè)函數(shù)名,就知道是用來(lái)統(tǒng)計(jì)個(gè)數(shù)的~返回的是一個(gè)dict,key是各個(gè)元素,value是對(duì)應(yīng)的個(gè)數(shù)。一開(kāi)始,我并不知道這個(gè)函數(shù),都是這樣統(tǒng)計(jì)的:

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

現(xiàn)在,直接一句話:

counter=collections.Counter(list)
print counter

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

此外,這個(gè)Counter不僅用來(lái)數(shù)數(shù),還有好多函數(shù)方便各種操作,例如:

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

關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python函數(shù)使用技巧總結(jié)》、《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python利用Selenium實(shí)現(xiàn)網(wǎng)站自動(dòng)簽到功能

    Python利用Selenium實(shí)現(xiàn)網(wǎng)站自動(dòng)簽到功能

    小編了解到了python的selenium庫(kù)對(duì)于自動(dòng)化測(cè)試的初學(xué)者很容易上手,今天就借這篇文章給大家介紹Python利用Selenium實(shí)現(xiàn)網(wǎng)站自動(dòng)簽到功能,感興趣的朋友一起看看吧
    2021-09-09
  • python實(shí)現(xiàn)讀取學(xué)術(shù)論文PDF文件內(nèi)容

    python實(shí)現(xiàn)讀取學(xué)術(shù)論文PDF文件內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了如何通過(guò)python實(shí)現(xiàn)讀取學(xué)術(shù)論文PDF文件內(nèi)容的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • python網(wǎng)絡(luò)編程學(xué)習(xí)筆記(五):socket的一些補(bǔ)充

    python網(wǎng)絡(luò)編程學(xué)習(xí)筆記(五):socket的一些補(bǔ)充

    前面已經(jīng)為大家介紹了python socket的一些相關(guān)知識(shí),這里為大家補(bǔ)充下,方便需要的朋友
    2014-06-06
  • 基于Python __dict__與dir()的區(qū)別詳解

    基于Python __dict__與dir()的區(qū)別詳解

    下面小編就為大家?guī)?lái)一篇基于Python __dict__與dir()的區(qū)別詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • Python如何實(shí)現(xiàn)Excel的最合適列寬(openpyxl)

    Python如何實(shí)現(xiàn)Excel的最合適列寬(openpyxl)

    這篇文章主要介紹了Python如何實(shí)現(xiàn)Excel的最合適列寬(openpyxl),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 詳解Windows下PyCharm安裝Numpy包及無(wú)法安裝問(wèn)題解決方案

    詳解Windows下PyCharm安裝Numpy包及無(wú)法安裝問(wèn)題解決方案

    這篇文章主要介紹了詳解Windows下PyCharm安裝Numpy包及無(wú)法安裝問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 深入理解python中pytest.ini的配置方法和參數(shù)

    深入理解python中pytest.ini的配置方法和參數(shù)

    Pytest 是 Python 測(cè)試框架中最流行的一個(gè),而 pytest.ini 文件則是 pytest 配置文件的核心,在本文中,將詳細(xì)介紹 pytest.ini 文件的配置方法和可能的參數(shù),幫助您更好地掌握 Pytest 的使用,需要的朋友可以參考下
    2024-10-10
  • python使用Apriori算法進(jìn)行關(guān)聯(lián)性解析

    python使用Apriori算法進(jìn)行關(guān)聯(lián)性解析

    這篇文章主要為大家分享了python使用Apriori算法進(jìn)行關(guān)聯(lián)性的解析,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 利用PyCharm操作Github(倉(cāng)庫(kù)新建、更新,代碼回滾)

    利用PyCharm操作Github(倉(cāng)庫(kù)新建、更新,代碼回滾)

    這篇文章主要介紹了利用PyCharm操作Github(倉(cāng)庫(kù)新建、更新,代碼回滾),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • pandas中刪除列的幾種方法

    pandas中刪除列的幾種方法

    在pandas中有多種方法可以刪除列,本文主要介紹了pandas中刪除列的幾種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07

最新評(píng)論

通化市| 咸阳市| 上思县| 伊通| 闵行区| 华安县| 鄂州市| 湖南省| 桐梓县| 越西县| 成武县| 永靖县| 准格尔旗| 富民县| 湖南省| 乐安县| 丹江口市| 卫辉市| 平顶山市| 永仁县| 五莲县| 榕江县| 阿城市| 普兰县| 天长市| 通河县| 石棉县| 宁安市| 绿春县| 鞍山市| 洛扎县| 满洲里市| 五家渠市| 封开县| 阜新市| 贵港市| 时尚| 连州市| 玉龙| 高州市| 平陆县|