我试图生成从0到n-1的所有k元组的列表,但是我希望这个列表在revlex中排序。例如
import itertools
list(itertools.combinations(range(0, 6), 3))
按字典顺序输出这些元组:
[(0,1,2),(0,1,3),(0,1,4),(0,1,5),(0,2,3),(0,2,4),(0,2,5),(0,3,4),(0,3,5),(0,4,5),(1,2,3),(1,2,4),(1,3,5),(1,3,5),(1,4,5),(2,3,4),(2,3,5),(2,4,5)]
鉴于我希望输出按逆向词典排序:
[(0,1,2),(0,1,3),(0,2,3),(1,2,3),(0,1,4),(0,2,4),(1,2,4),(1,3,4),(2,3,4),(0,1,5),(0,2,5),(1,2,5),(0,3,5),(1,3,5),(2,3,5),(0,4,5),(1,4,5),(2,4,5),(3,4,5)]
谢谢!你知道吗
你的逆向词典排序顺序是按最后一个项目排序,然后再按最后一个项目排序,等等。一种方法是取范围,反转该范围,使用itertools从中生成所有组合,反转该组合列表中的每个项目,最后反转整个列表。列表或元组可以通过
[::-1]
切片来反转,因此mylist
的反转是mylist[::-1]
。利用这个,我们可以得到一个复杂的表达式range
函数有一种获得递减序列的内置方法。如果我们用它,我们会得到这看起来并不容易。这两个表达式中的任何一个都给出了结果
这就是你想要的。你知道吗
有一些例程可以做到这一点,您可以使用中间变量将表达式分解为多行。两者中的任何一个都比那句话更清楚。多行可以是:
现在变量
rl
保存您想要的列表。你知道吗所有这些都在python2.7.12中进行了测试。在python3中,您可能需要在
list()
周围放置一个r
。你知道吗相关问题 更多 >
编程相关推荐