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的...