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

Python中Collection的使用小技巧

 更新時(shí)間:2014年08月18日 16:05:38   投稿:shichen2014  
這篇文章主要介紹了Python中Collection的使用小技巧,對(duì)初學(xué)者來說有不錯(cuò)的學(xué)習(xí)借鑒價(jià)值,需要的朋友可以參考下

本文所述實(shí)例來自獨(dú)立軟件開發(fā)者 Alex Marandon,在他的博客中曾介紹了數(shù)個(gè)關(guān)于 Python Collection 的實(shí)用小技巧,在此與大家分享。供大家學(xué)習(xí)借鑒之用。具體如下:

1.判斷一個(gè) list 是否為空

傳統(tǒng)的方式:

if len(mylist):
  # Do something with my list
else:
  # The list is empty

由于一個(gè)空 list 本身等同于 False,所以可以直接:

if mylist:
  # Do something with my list
else:
  # The list is empty

2.遍歷 list 的同時(shí)獲取索引

傳統(tǒng)的方式:

i = 0
for element in mylist:
  # Do something with i and element
  i += 1

這樣更簡潔些:

for i, element in enumerate(mylist):
  # Do something with i and element
  pass

3.list 排序

在包含某元素的列表中依據(jù)某個(gè)屬性排序是一個(gè)很常見的操作。例如這里我們先創(chuàng)建一個(gè)包含 person 的 list:

class Person(object):
  def __init__(self, age):
    self.age = age
 
persons = [Person(age) for age in (14, 78, 42)]

傳統(tǒng)的方式是:

def get_sort_key(element):
  return element.age
 
for element in sorted(persons, key=get_sort_key):
  print "Age:", element.age

更加簡潔、可讀性更好的方法是使用 Python 標(biāo)準(zhǔn)庫中的 operator 模塊:

from operator import attrgetter
 
for element in sorted(persons, key=attrgetter('age')):
  print "Age:", element.age

attrgetter 方法優(yōu)先返回讀取的屬性值作為參數(shù)傳遞給 sorted 方法。operator 模塊還包括 itemgetter 和 methodcaller 方法,作用如其字面含義。

4.在 Dictionary 中元素分組

和上面類似,先創(chuàng)建 Persons:

class Person(object):
  def __init__(self, age):
    self.age = age
 
persons = [Person(age) for age in (78, 14, 78, 42, 14)]

如果現(xiàn)在我們要按照年齡分組的話,一種方法是使用 in 操作符:

persons_by_age = {}
 
for person in persons:
  age = person.age
  if age in persons_by_age:
    persons_by_age[age].append(person)
  else:
    persons_by_age[age] = [person]
 
assert len(persons_by_age[78]) == 2

相比較之下,使用 collections 模塊中 defaultdict 方法的途徑可讀性更好:

from collections import defaultdict
 
persons_by_age = defaultdict(list)
 
for person in persons:
  persons_by_age[person.age].append(person)

defaultdict 將會(huì)利用接受的參數(shù)為每個(gè)不存在的 key 創(chuàng)建對(duì)應(yīng)的值,這里我們傳遞的是 list,所以它將為每個(gè) key 創(chuàng)建一個(gè) list 類型的值。

本文示例僅為程序框架,具體功能還需要讀者根據(jù)自身應(yīng)用環(huán)境加以完善。希望本文所述實(shí)例對(duì)大家學(xué)習(xí)Python能起到一定的幫助作用。

相關(guān)文章

  • Python數(shù)據(jù)分析之Matplotlib的常用操作總結(jié)

    Python數(shù)據(jù)分析之Matplotlib的常用操作總結(jié)

    Matplotlib是Python的繪圖庫,它可與NumPy一起使用,提供了一種有效的MatLab開源替代方案,下面這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)分析之Matplotlib常用操作的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • python判斷文件夾內(nèi)是否存在指定后綴文件的實(shí)例

    python判斷文件夾內(nèi)是否存在指定后綴文件的實(shí)例

    今天小編就為大家分享一篇python判斷文件夾內(nèi)是否存在指定后綴文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • PyQt Qt Designer工具的布局管理詳解

    PyQt Qt Designer工具的布局管理詳解

    這篇文章主要介紹了PyQt Qt Designer工具的布局管理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python線程池thread?pool創(chuàng)建使用及實(shí)例代碼分享

    Python線程池thread?pool創(chuàng)建使用及實(shí)例代碼分享

    這篇文章主要介紹了Python線程池(thread?pool)創(chuàng)建使用及實(shí)例代碼分享,文章圍繞主題展開詳細(xì)的內(nèi)容介紹具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • Python入門教程(四十一)Python的NumPy數(shù)組索引

    Python入門教程(四十一)Python的NumPy數(shù)組索引

    這篇文章主要介紹了Python入門教程(四十一)Python的NumPy數(shù)組索引,數(shù)組索引是指使用方括號(hào)([])來索引數(shù)組值,numpy提供了比常規(guī)的python序列更多的索引工具,除了按整數(shù)和切片索引之外,數(shù)組可以由整數(shù)數(shù)組索引、布爾索引及花式索引,需要的朋友可以參考下
    2023-05-05
  • python微信公眾號(hào)之關(guān)鍵詞自動(dòng)回復(fù)

    python微信公眾號(hào)之關(guān)鍵詞自動(dòng)回復(fù)

    這篇文章主要為大家詳細(xì)介紹了python微信公眾號(hào)之關(guān)鍵詞自動(dòng)回復(fù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 使用Python實(shí)現(xiàn)牛頓法求極值

    使用Python實(shí)現(xiàn)牛頓法求極值

    今天小編就為大家分享一篇使用Python實(shí)現(xiàn)牛頓法求極值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • ffmpeg+Python實(shí)現(xiàn)B站MP4格式音頻與視頻的合并示例代碼

    ffmpeg+Python實(shí)現(xiàn)B站MP4格式音頻與視頻的合并示例代碼

    這篇文章主要介紹了ffmpeg+Python實(shí)現(xiàn)B站MP4格式音頻與視頻的合并,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T

    tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU

    這篇文章主要介紹了tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Numpy 將二維圖像矩陣轉(zhuǎn)換為一維向量的方法

    Numpy 將二維圖像矩陣轉(zhuǎn)換為一維向量的方法

    今天小編就為大家分享一篇Numpy 將二維圖像矩陣轉(zhuǎn)換為一維向量的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06

最新評(píng)論