递增列表列表
List of increasing lists
给定整数 n >= m,我想用集合 {1,...,n} 中的元素构建所有长度为 m 的递增列表的列表。
例如,如果 n=4 且 m=2,我想要
[[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
.
有没有什么好的方法可以用很少的 Python 代码行来做到这一点?
我想构建一个高效的函数
def listOfLists(n, m):
????
return ? # the list of all increasing lists of m elements in {1, 2, ..., n}
谢谢!
我认为这可能有效:
n=4
m=2
result=[]
for i in range(1,n):
for j in range(i+1,n+1):
result.append([i,j])
您可以使用 itertools
:
from itertools import combinations
m = 2
n = 4
list(combinations(list(range(1, n+1)), m))
编辑:如果你想要一个函数,只需return它:
from itertools import combinations
m = 2
n = 4
def listOfLists(n, m):
return list(combinations(list(range(1, n+1)), m))
listOfLists(n, m)
使用 itertools 中的组合
In [29]: from itertools import combinations
In [30]: def get_list(n, m):
...: return [i for i in combinations(range(1, n+1), m)]
In [31]: get_list(4, 2)
Out[31]: [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
给定整数 n >= m,我想用集合 {1,...,n} 中的元素构建所有长度为 m 的递增列表的列表。
例如,如果 n=4 且 m=2,我想要
[[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
.
有没有什么好的方法可以用很少的 Python 代码行来做到这一点?
我想构建一个高效的函数
def listOfLists(n, m):
????
return ? # the list of all increasing lists of m elements in {1, 2, ..., n}
谢谢!
我认为这可能有效:
n=4
m=2
result=[]
for i in range(1,n):
for j in range(i+1,n+1):
result.append([i,j])
您可以使用 itertools
:
from itertools import combinations
m = 2
n = 4
list(combinations(list(range(1, n+1)), m))
编辑:如果你想要一个函数,只需return它:
from itertools import combinations
m = 2
n = 4
def listOfLists(n, m):
return list(combinations(list(range(1, n+1)), m))
listOfLists(n, m)
使用 itertools 中的组合
In [29]: from itertools import combinations
In [30]: def get_list(n, m):
...: return [i for i in combinations(range(1, n+1), m)]
In [31]: get_list(4, 2)
Out[31]: [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]