如何解决如何将itertools组合作为没有for循环的列表列表
我正在尝试使用 itertools.combinations
来返回函数内的列表列表,但是我的代码返回了一个元组列表...
array = list(combinations(a,m))
returns:
[(1,2),(1,3),(2,3)]
我可以通过使用 for 循环来获得所需的输出:
array1 = []
for i in array:
array1.append(list(i))
return array1
returns:
[[1,2],[1,3],[2,3]]
但是我不想在函数中使用 for 循环,因为还有其他 for 循环,我想缩短时间复杂度。
如何在不使用 for 循环的情况下从 itertools.combinations
获取此列表列表?在列表理解中使用循环也会增加时间。我在 SO 帖子或 Python 网站上找不到我想要的答案。
解决方法
渐近复杂度将始终保持不变。您不会绕过将每个组合转换为列表。你可以懒惰地这样做:
from itertools import combinations
def list_combs(iterable,k):
return map(list,combinations(iterable,k))
您现在可以使用 list_combs
作为 combinations
的直接替代品,只有在使用下一个组合后才会延迟应用列表转换开销。
for c in list_combs([1,2,3],2):
print(c)
[1,2]
[1,3]
[2,3]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。