【发布时间】:2016-08-31 03:25:11
【问题描述】:
给定一个列表l 和列表元素的所有组合,是否有可能在迭代所有组合时删除包含x 的任何组合,这样您就不会在迭代后考虑包含x 的组合删除了吗?
for a, b in itertools.combinations(l, 2):
if some_function(a,b):
remove_any_tup_with_a_or_b(a, b)
我的列表 l 非常大,所以我不想将这些组合保留在内存中。
【问题讨论】:
-
@PM2Ring:我认为关于“我不想将组合保留在内存中”的评论是说创建
list(或其他一些数据结构)的简单解决方案这些组合,因此您可以在识别出它们后立即从list中删除“坏”组合,这是不合适的。大多数甚至知道itertools的人都知道生成器是如何工作的(避免了前期的内存成本)。 -
@ShadowRanger:哦,好的。
标签: python iterator combinations