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

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

 2008-09-30 12:57:47 来源:WEB开发网   
核心提示: 清单 3. 根据两个列表的成员关系执行不同的操作list1.sort()list2.sort()list2_xtra = []list2_ndx = 0for it1 in list1:it2 = list2[list2_ndx]while it1 < it2:list2_ndx +

清单 3. 根据两个列表的成员关系执行不同的操作

list1.sort()
list2.sort()
list2_xtra = []
list2_ndx = 0
for it1 in list1:
  it2 = list2[list2_ndx]
  while it1 < it2:
    list2_ndx += 1
    it2 = list2[list2_ndx]
    if it1 == it2:
      item_in_both(it1)
    elif it1 > it2:
      item_in_list1(it1)
    else:
      list2_xtra.appen(it2)
for it2 in list2_xtra:
   item_in_list2(it2)

有时候,有意义比较的 “局部序列” 是有用的,甚至在出现不同类型对象的情况下也是如此(例如,“依次” 处理所有浮点值,即使它们与其他地方处理的字符串没有可比性)。

排序失败

当然,上面执行 “list diff” 的代码几乎可以任意扩展。例如,list1 和 list2 可以是下面这样的小列表的集合。请试着猜一下哪些部分是可以排序的:

清单 4. 可排序和不可排序列表的大杂烩

['x','y','z', 1],
['x','y','z', 1j],
['x','y','z', 1j, 1],    # Adding an element makes it unsortable
[0j, 1j, 2j],        # An obvious "natural" order
[0j, 1, 2],
[0, 1, 2],         # Notice that 0==0j --> True
[chr(120), chr(240)],
[chr(120), chr(240), 'x'],
[chr(120), chr(240), u'x'], # Notice u'x'=='x' --> True
[u'a', 'b', chr(240)],
[chr(240), u'a', 'b']    # Same items, different initial order

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

Tags:可爱 Python Python

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