1. 檢測列表是否是空 沒必要去調用len方法去檢測一個列表是否是空,因為空列表求值就是False的。 可以用下麵的方法代替: 2. 在迭代列表的同時獲取元素的索引值 有時候你需要在迭代一個列表的同時獲取每個元素的索引值。通常的做法是: 更好的做法是: 3. 列表排序 創建一個persons列表: ...
1. 檢測列表是否是空
沒必要去調用len方法去檢測一個列表是否是空,因為空列表求值就是False的。
if len(mylist): # Do something with my list else: # The list is empty
可以用下麵的方法代替:
if mylist: # Do something with my list else: # The list is empty
2. 在迭代列表的同時獲取元素的索引值
有時候你需要在迭代一個列表的同時獲取每個元素的索引值。通常的做法是:
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. 列表排序
創建一個persons列表:
class Person(object): def __init__(self, age): self.age = age persons = [Person(age) for age in (14, 78, 42)]
如果我們想要根據age對列表進行排序,可以這麼做:
def get_sort_key(element): return element.age for element in sorted(persons, key=get_sort_key): print "Age:", element.age
我們定義了一個函數,返回作為排序條件的屬性。並且把這個函數作為參數傳遞給sorted函數。因為這種排序很常用,所以Python標準庫已經包含了這樣的函數。
from operator import attrgetter # attrgetter是一個高階函數,可以返回一個函數 for element in sorted(persons, key=attrgetter('age')): print "Age:", element.age
這樣做代碼更易讀。當你看到attrgetter函數的時候你就會知道它是用來獲取一個屬性的。operator模塊中還有itemgetter和methodcaller方法,相信你一眼就能看出他們的作用。