Python 如何在列表中逐个创建元素组合?
我有一个元素列表[1,2,3,4,5],我想一个接一个地生成组合,比如[1,2,3],[2,4,5],等等 我尝试使用itertools.combines,但这会列出所有可能的组合,这会占用太多的内存空间 如何在生成每个新组合时正确访问它 如何在生成每个新组合时正确访问它 对循环使用Python 如何在列表中逐个创建元素组合?,python,combinations,Python,Combinations,我有一个元素列表[1,2,3,4,5],我想一个接一个地生成组合,比如[1,2,3],[2,4,5],等等 我尝试使用itertools.combines,但这会列出所有可能的组合,这会占用太多的内存空间 如何在生成每个新组合时正确访问它 如何在生成每个新组合时正确访问它 对循环使用,如下所示: import itertools for a, b, c in itertools.combinations(range(1, 101), 3): if a**2 + b**2 == c**2:
,如下所示:
import itertools
for a, b, c in itertools.combinations(range(1, 101), 3):
if a**2 + b**2 == c**2:
print(a, b, c)
itertools.combines
列出所有可能的组合
不,没有
itertools.combines()
是一个。在for
循环中使用时,一次只返回一个结果。从未创建所有结果的列表
如何在生成每个新组合时正确访问它
对
循环使用,如下所示:
import itertools
for a, b, c in itertools.combinations(range(1, 101), 3):
if a**2 + b**2 == c**2:
print(a, b, c)
itertools.combines
列出所有可能的组合
不,没有
itertools.combines()
是一个。在for
循环中使用时,一次只返回一个结果。没有创建所有结果的list
。迭代list(itertools.combines(a,3))
其中a=[1,2,3,4,5]
是否要使用generator
?但是itertools.combines是一个生成器,因此不应该存在内存问题?myList=[1,2,3,4,5]。list(itertools.combines(myList,3))提供了一个组合列表,[1,2,3],[2,3,4],[3, 4, 5]. 这对于小型MyList很有效,但对于包含数千个组合的列表,它会占用大量内存空间和时间。我想检查每个数字的组合是否可以构成一个有效的三角形。所以我想生成一个组合,检查它,如果它合适就停止,而不是列出所有组合然后检查它们。迭代列表(itertools.combines(a,3))
其中a=[1,2,3,4,5]
是否要使用生成器
?但是itertools.combines是一个生成器,因此不应该存在内存问题?myList=[1,2,3,4,5]。list(itertools.combines(myList,3))提供了一个组合列表,[1,2,3],[2,3,4],[3, 4, 5]. 这对于小型MyList很有效,但对于包含数千个组合的列表,它会占用大量内存空间和时间。我想检查每个数字的组合是否可以构成一个有效的三角形。所以我想生成一个组合,检查它,如果合适就停止,而不是列出所有组合,然后检查它们。你不会说你是在使用Python2还是Python3range()
返回生成器对象range()
返回一个列表。如果要节省内存,请在Python2.N.b中使用xrange()
。你不会说你是在使用Python2还是Python3range()
返回生成器对象列表。如果要节省内存,请在Python2中使用xrange()
。