class Solution(object):
    _dp = [0]
    def numSquares(self, n):
        dp = self._dp
        while len(dp) <= n:
            dp += min(dp[-i*i] for i in range(1, int(len(dp)**0.5+1))) + 1,
        return dp[n]
这是 StefanPochmann 给的 python 版本动态规划答案,不知道 while 循环中的“,”是什么语法,如果去掉会直接运行失败。
     1 
                    
                    xpresslink      2019-01-29 11:40:16 +08:00    加了逗号代表那个是元组 
                 | 
            
     2 
                    
                    mayorbryant      2019-01-29 11:43:56 +08:00    逗号标识这是一个迭代器的 +=,也就是你代码中的_dp, 去掉逗号的话就是一个 int 的+=操作了,所以会在 return dp[n]报一个`'int' object is not iterable`的错误 
                 | 
            
     3 
                    
                    ericls      2019-01-29 11:58:41 +08:00    写这个代码的开除吧。。。 
                 | 
            
     4 
                    
                    whoami9894      2019-01-29 13:49:09 +08:00 via Android 
                    
                    相当于 dp += [min(xx) + 1] 
                 | 
            
     6 
                    
                    lkmountain      2019-01-29 14:03:18 +08:00 via Android 
                    
                    这么写想打死他 
                 | 
            
     7 
                    
                    xpresslink      2019-01-29 14:28:39 +08:00 
                    
                    @Vegetable 如果都是这种套路,人家这么写就是不想被开除  
                   | 
            
     8 
                    
                    Vegetable      2019-01-29 14:41:28 +08:00 
                    
                    @xpresslink ...学习了 
                 | 
            
     9 
                    
                    holy_sin   OP @whoami9894 没毛病 
                 | 
            
     10 
                    
                    dendi009      2019-01-29 17:37:43 +08:00 
                    
                    MMP,想打死他 +1。   为什么要逗号, 因为 list 不能跟 int 相加。 
                 | 
            
     12 
                    
                    kaneg      2019-01-29 20:44:43 +08:00 
                    
                    代码行数是少了,但真的是影响可读性。 
                这个如果在我们公司里,Code Review 是不给过的。  | 
            
     13 
                    
                    Raisu      2019-01-29 21:38:52 +08:00 via Android 
                    
                    开除吧,看不懂不一定是自己问题 
                 | 
            
     15 
                    
                    mmdsun      2019-01-30 00:01:17 +08:00 via Android 
                    
                    请问 py 为什么这样设计?既然()就是元祖的意思为啥还要多加一个逗号(1,)? 
                 | 
            
     16 
                    
                    PulpFunction      2019-01-30 04:42:41 +08:00 via Android 
                    
                    这个问题有意思哎 在线程传参数遇到过 
                 | 
            
     19 
                    
                    billwsy      2019-01-30 06:08:33 +08:00 
                    
                    应该写个 append,干嘛+= 
                 | 
            
     20 
                    
                    master13      2019-01-30 08:14:48 +08:00 
                    
                    看到大家都要开除这个答案,我就放心了 
                 | 
            
     21 
                    
                    ijustdo      2019-01-30 08:50:45 +08:00 
                    
                    没毛病 
                 | 
            
     22 
                    
                    araraloren      2019-01-30 09:00:16 +08:00 
                    
                    @mmdsun 因为`括号`是一个正常的语法啊,这在其他编程语言中处理基本是一样的 
                 | 
            
     24 
                    
                    vipppppp      2019-01-30 09:19:51 +08:00 
                    
                    
                 | 
            
     25 
                    
                    vipppppp      2019-01-30 09:24:45 +08:00 
                    
                    上次手抖,写接口返回给前端的时候 
                写了句 data = list(my_dict.values()), 真的是血炸,找了很久的 bug....  | 
            
     26 
                    
                    xpresslink      2019-01-30 11:22:21 +08:00 
                    
                    @mmdsun 兄弟你肯定没有认真看书,或都看了一些很二的教程。元组定义就是用逗号分隔的一组元素,跟括号根本没有关系好吧。只是因为大多情况下在表达式中需要用括号做定界符。a=1,    a=1,2,3  a 就是元组了,根本不用括号。 
                 | 
            
     27 
                    
                    mmdsun      2019-01-30 13:27:27 +08:00 via Android 
                    
                    @xpresslink 不好意思了。没学过 py 只是好奇语法。现在明白了。感谢回复。 
                 | 
            
     28 
                    
                    yim7      2019-01-30 14:03:24 +08:00 
                    
                    我之前写代码不小心加上逗号,debug 找了一会,主要是在修改同事代码,语句有点长没注意到,一直觉得这是语法的坑。用这个特性的该打 
                 | 
            
     29 
                    
                    WayToGo      2019-01-31 17:18:41 +08:00 
                    
                    为了省点眼神,还是写成 tuple(a) 
                 |