用 Python 写 Subsets 算法, lambda 里的 x 没有类型?

2015-07-25 07:08:30 +08:00
 laoyuan
class Solution:
    def subsets(self, S):
        if not S:
            return [[]]
        return map(lambda x: sorted([S[0]] + x), self.subsets(S[1:])) + self.subsets(S[1:])
        #return map(lambda x: sorted(x.append(S[0])), self.subsets(S[1:])) + self.subsets(S[1:])

print Solution().subsets([1, 2])
print Solution().subsets([3, 2, 1])

注释里的写法报 TypeError: 'NoneType' object is not iterable,不让用append方法,但x 明明就是一个list 啊

2112 次点击
所在节点    Python
3 条回复
leavic
2015-07-25 14:04:09 +08:00
骚年,你在哪里定义x是个list了,至少你这几行里我看不出来,实在不行你加个list()函数强制转成list不行吗
laoyuan
2015-07-25 21:43:15 +08:00
我错了,append 仅仅是修改对象,没有返回值。。。
laoyuan
2015-07-25 21:43:58 +08:00
顺便发一下reduce 版本:
return reduce(lambda x, y: x + map(lambda z: sorted(z + [y]), x), [[[]]] + S)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/208192

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX