码迷,mamicode.com
首页 > 编程语言 > 详细

关于Python集合的几点建议

时间:2016-04-09 06:57:32      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

 

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方法,相信你一眼就能看出他们的作用。

 

关于Python集合的几点建议

标签:

原文地址:http://www.cnblogs.com/maple0x/p/5370518.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!