Python中Collection的使用小技巧

2022-10-05 00:06:23 字數 2072 閱讀 4063

1.判斷乙個 list 是否為空

傳統的方式:

if len(mylist):

# do something with my list

else:

# the list is empty

由於乙個空 list 本身等同於 false,所以可以直接:

if mylist:

# do something with my list

else:

# the list is empty

2.遍歷 list 的同時獲取索引

傳統的方式:

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 排序

在包含某元素的列表中依據某個屬性排序是乙個很常見的操作。例如這裡我們先建立乙個包含 person 的 list:

class person(object):

def __init__(self, age):

self.age = age

persons = [person(age) for age in (14, 78, 42)]

傳統的方式是:

def get_sort_key(element):

return element.age

for element in sorted(persons, key=get_sort_key):程式設計客棧

print "age:", element.age

更加簡潔、可讀性更好的方法是使用 python 標準庫中的 operator 模組:

from operator import attrgetter

for element ikqkpigupn sorted(persons, key=attrgetter('age')):

print "age:", element.age

attrgetter 方法優先返回讀取的屬性值作為引數傳遞給 sorted 方法。operator 模組還包括 itemgetter 和 methodcaller 方法,作用如其字面含義。

4.在 dictionary 中元素分組

和上面類似,kqkpigup先建立 persons:

class person(object):

def __init__(self, ag程式設計客棧e):

self.age = age

persons = [person(age) for age in (78, 14, 78, 42, 14)]

如果現在我們要按照年齡分組的話,一種方法是使用 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)

defaulwww.cppcns.comtdict 將會利用接受的引數為每個不存在的 key 建立對應的值,這裡我們傳遞的是 list,所以它將為每個 key 建立乙個 list 型別的值。

本文標題: python中collection的使用小技巧

本文位址:

webcontrol中的collection屬性

今天可以說是費了九牛二虎之力,通宵一晚,才研究出這個webcontrol的collection屬性的設定.首先介紹幾個屬性上的attribute 1 designerserializationvisibility 常用的是designerserializationvisibility designe...

python常用內建模組 collections

1.namedtuple namedtuple是乙個函式,它用來建立乙個自定義的tuple物件,並且規定了tuple元素的個數,並可以用屬性而不是索引來引用tuple的某個元素。這樣一來,我們用namedtuple可以很方便地定義一種資料型別,它具備tuple的不變性,又可以根據屬性來引用,使用十分...

Python容器資料型別 collections

usr bin python coding utf 8 count物件 only 2.7 from collections import counter 統計字母出現的次數 counter hello world counter red blue red green blue blue 小於等於0的...