WEB开发网
开发学院软件开发Python 可爱的 Python: Python 之优雅与瑕疵,第 1 部分 阅读

可爱的 Python: Python 之优雅与瑕疵,第 1 部分

 2008-09-30 12:57:47 来源:WEB开发网   
核心提示: 我编写了一个小程序来尝试排序各列表: 清单 5. 对各列表进行排序的结果% python compare.py(0)['x', 'y', 'z', 1] --> [1, 'x', 'y', 'z&

我编写了一个小程序来尝试排序各列表:

清单 5. 对各列表进行排序的结果

% python compare.py
(0) ['x', 'y', 'z', 1] --> [1, 'x', 'y', 'z']
(1) ['x', 'y', 'z', 1j] --> [1j, 'x', 'y', 'z']
(2) ['x', 'y', 'z', 1j, 1] --> exceptions.TypeError
(3) [0j, 1j, 2j] --> exceptions.TypeError
(4) [0j, 1, 2] --> exceptions.TypeError
(5) [0, 1, 2] --> [0, 1, 2]
(6) ['x', 'xf0'] --> ['x', 'xf0']
(7) ['x', 'xf0', 'x'] --> ['x', 'x', 'xf0']
(8) ['x', 'xf0', u'x'] --> exceptions.UnicodeDecodeError
(9) [u'a', 'b', 'xf0'] --> [u'a', 'b', 'xf0']
(10) ['xf0', u'a', 'b'] --> exceptions.UnicodeDecodeError

通过前面的解释,或多或少能够猜出一部分结果。但是,看一下 (9) 和 (10),这两个列表以不同次序包含完全相同的对象:由此可见,排序是否失败不但取决于列表中 对象的类型和值,还取决于 list.sort() 方法的特定实现!

修订比较

自 1.5.2 以来,Python 发展出了一种非常有用的数据类型:集(set),它最初是一个标准模块,后来成了一种内置类型(模块还包含一些额外的特性)。对于上面描述的许多问题,只需使用集来取代列表即可轻松地判断对象是在一个集合中、在另一个集合中还是同时存在于两个集合中,而不需要编写自己的 “list diff” 代码。例如:

上一页  1 2 3 4 5 6 7 8  下一页

Tags:可爱 Python Python

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接