【发布时间】:2021-08-17 05:37:32
【问题描述】:
给定以下来自 Leetcode 的代码:
def combine(self, n: int, k: int) -> List[List[int]]:
combs = [[]]
for _ in range(k):
combs = [[i] + c for c in combs for i in range(1, c[0] if c else n+1)]
return combs
如何扩展内部combs 循环以提高可读性?我在下面尝试过,但是我在使用c[0] 部分时遇到了关于索引越界的错误,所以我知道我做错了什么,但是在类似的列表理解问题中我找不到一个非常相似的问题知道我实际上做错了什么。
for c in combs:
if c:
for i in range(1, c[0]):
combs.extend([i] + c)
else:
for i in range(1, n+1):
combs.extend([i] + c)
有什么想法吗?
【问题讨论】:
-
要记住的一件事:在循环内操作被循环的任何内容都不是一个好主意。在 for 循环情况下,
combs在循环时被扩展。如果您仔细观察,列表理解示例中不会发生这种情况。
标签: python list for-loop list-comprehension