1

由于我是 Python 新手,因此我试图理解以下代码。我知道代码计算了powerset,但这条线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)
4

1 回答 1

2

暗示:

你非常亲近。只需将空列表创建移动到第二个循环内。

工作代码:

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']]
于 2017-10-09T03:58:17.913 回答