关于Python集合的几点建议

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

关于Python集合的几点建议的相关文章

《编写高质量代码:改善Python程序的91个建议》读后感

编写高质量代码:改善Python程序的91个建议  http://book.douban.com/subject/25910544/ 1.(建议16)is 用于判断两个对象的id是否相等,==才是判断值是否相等 2.(建议23)for,while,和try语句后面都可以跟else语句,可以简化代码 3.(建议18) __init__.py模块可以写代码,import时只需要 import 包(文件夹) 4.(建议19)用import a 而不是 from a import b ,可以避免嵌套导入

Python 集合set()添加删除、交集、并集、集合操作详解

在Python set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 创建集合set python set类是在python的sets模块中,大家现在使用的python2.7.x中,不需要导入sets模块可以直接创建集合.>>>set('boy')set(['y', 'b', 'o']) 集合添加.删除 python 集合的添加有两种常用方法,分别是add

Python 集合set添加删除、交集、并集、集合操作符号

在Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 1.创建集合 set类是在python的sets模块中,大家现在使用的python2.3中,不需要导入sets模块可以直接创建集合.>>>set('boy')set(['y', 'b', 'o']) 2.集合添加.删除 集合的添加有两种常用方法,分别是add和update.集合add方法:是把要

Lesson 018 —— python 集合

Lesson 018 -- python 集合 集合(set)是一个无序的不重复元素序列. 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典. parame = {value01,value02,...} 或者 set(value) 类似列表推导式,同样集合支持集合推导式(Set comprehension): >>>a = {x for x in 'abracadabra' if x no

Python 集合内置函数大全(非常全!)

Python集合内置函数操作大全 集合(s).方法名 等价符号 方法说明 s.issubset(t) s <= t 子集测试(允许不严格意义上的子集):s 中所有的元素都是 t 的成员   s < t 子集测试(严格意义上):s != t 而且 s 中所有的元素都是 t 的成员 s.issuperset(t) s >= t 超集测试(允许不严格意义上的超集):t 中所有的元素都是 s 的成员   s > t 超集测试(严格意义上):s != t 而且 t 中所有的元素都是 s 的成

python编程规范与代码优化建议

1.严格使用缩进来体现代码的逻辑从属关系. python对代码的缩进是硬性要求,这一点必须时刻注意.如果某个代码段的缩进不对,那么整个程序就是错的,要么是语法错误无法执行,要么是逻辑错误导致错误结果,而检查这样的错误会花费很多时间. 2.每个import语句只导入一个模块,最好按标准库.扩展库.自定义库的顺序依次导入. 尽量避免导入整个库,最好只导入确实需要使用的对象,这会让程序运行更快. 3.最好在每个类.函数定义和一段完整的功能代码之后增加一个空行,在运算符两侧各增加一个空格,逗号后面增加一

Python集合(set)类型的操作

python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算. sets 支持 x in set, len(set),和 for x in set.作为一个无序的集合,sets不记录元素位置或者插入点.因此,sets不支持 indexing, slicing, 或其它类序列(sequence-l

python 集合、函数

*集合: set:持有一系列元素,但是set元素没有重复,并且无序 如何创建:set()并传入一个list,list的元素将作为set 的元素. s=set(['a','b','c']) print(s)    //set(['a', 'c', 'b']) print(len(s))  //3 如何访问:用in操作符判断有没有 =([,,,]) ( )//True set的特点: 1.内部结构和字典很像,唯一区别是不存储value =([,,,,,,]) x1=x2=x1 :     () (x

转: Python集合(set)类型的操作

python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算. sets 支持 x in set, len(set),和 for x in set.作为一个无序的集合,sets不记录元素位置或者插入点.因此,sets不支持 indexing, slicing, 或其它类序列(sequence-l