在Python中列出列表元素之间的任意total order的优雅方法是什么,例如以下示例中的函数 torder (其中C> B> A)。 编辑:我假设列表定义了订单:
>>> s = ['A','B','C']
>>> torder('B')
['A']
>>> torder('C')
['A','B']
我可以使用如果和 elif ,如果列表很短但是正在寻找更多pythonic的东西。
答案 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))