如何展开列表理解
How to unroll a list comprehension
由于我是 Python 的新手,所以我试图理解以下代码。我知道代码计算了幂集,但是 subsetlist = [ subset + [item] for subset in result]
行有点难以理解。我怎样才能将这条复合线分解为简单的 for 循环以便于理解。
def powerset(x):
result = [[]]
for item in x:
subsetlist = [ subset + [item] for subset in result]
result.extend(subsetlist)
return result
这是我试图简化的方法,但似乎不起作用。我的 IDLE 卡住了,没有打印任何东西。
def powerset(x):
result = [[]]
for item in x:
for subset in result:
result.append(item)
print(result)
提示:
你们非常亲密。只需将空列表创建移动到第二个循环中。
工作代码:
def powerset(x):
result = [[]]
for item in x:
subsetlist = []
for subset in result:
subsetlist.append(subset + [item])
result.extend(subsetlist)
return result
IDLE 的输出:
>>> powerset('abc')
[[], ['a'], ['b'], ['a', 'b'], ['c'], ['a', 'c'], ['b', 'c'], ['a', 'b', 'c']]
由于我是 Python 的新手,所以我试图理解以下代码。我知道代码计算了幂集,但是 subsetlist = [ subset + [item] for subset in result]
行有点难以理解。我怎样才能将这条复合线分解为简单的 for 循环以便于理解。
def powerset(x):
result = [[]]
for item in x:
subsetlist = [ subset + [item] for subset in result]
result.extend(subsetlist)
return result
这是我试图简化的方法,但似乎不起作用。我的 IDLE 卡住了,没有打印任何东西。
def powerset(x):
result = [[]]
for item in x:
for subset in result:
result.append(item)
print(result)
提示:
你们非常亲密。只需将空列表创建移动到第二个循环中。
工作代码:
def powerset(x):
result = [[]]
for item in x:
subsetlist = []
for subset in result:
subsetlist.append(subset + [item])
result.extend(subsetlist)
return result
IDLE 的输出:
>>> powerset('abc')
[[], ['a'], ['b'], ['a', 'b'], ['c'], ['a', 'c'], ['b', 'c'], ['a', 'b', 'c']]