Python中的总订单

时间:2012-02-27 14:37:52

标签: python algorithm

在Python中列出列表元素之间的任意total order的优雅方法是什么,例如以下示例中的函数 torder (其中C> B> A)。 编辑:我假设列表定义了订单:

>>> s = ['A','B','C']
>>> torder('B')
['A']
>>> torder('C')
['A','B']

我可以使用如果 elif ,如果列表很短但是正在寻找更多pythonic的东西。

2 个答案:

答案 0 :(得分:4)

def orde(i, s):
    t = sorted(s)
    return t[:t.index(i)]

s = ['A','B','C']
orde("B", s)

答案 1 :(得分:3)

import itertools
itertools.takewhile(lambda x: x != 'C', s)

如果订单未由列表中的位置定义:

sorted(filter(lambda x: x < 'C', s))