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方法,相信你一眼就能看出他们的作用。
时间: 2024-10-26 20:35:28