Python 小白,向各位大佬请教个逗号问题

2019-01-29 11:36:17 +08:00
 holy_sin

leetcode 279. Perfect Squares

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 循环中的“,”是什么语法,如果去掉会直接运行失败。

4730 次点击
所在节点    Python
29 条回复
xpresslink
2019-01-29 11:40:16 +08:00
加了逗号代表那个是元组
mayorbryant
2019-01-29 11:43:56 +08:00
逗号标识这是一个迭代器的 +=,也就是你代码中的_dp, 去掉逗号的话就是一个 int 的+=操作了,所以会在 return dp[n]报一个`'int' object is not iterable`的错误
![]( )
ericls
2019-01-29 11:58:41 +08:00
写这个代码的开除吧。。。
whoami9894
2019-01-29 13:49:09 +08:00
相当于 dp += [min(xx) + 1]
Vegetable
2019-01-29 13:57:33 +08:00
@ericls
这么写代码的确应该开除...
lkmountain
2019-01-29 14:03:18 +08:00
这么写想打死他
xpresslink
2019-01-29 14:28:39 +08:00
@Vegetable 如果都是这种套路,人家这么写就是不想被开除
Vegetable
2019-01-29 14:41:28 +08:00
@xpresslink ...学习了
holy_sin
2019-01-29 16:53:50 +08:00
@whoami9894 没毛病
dendi009
2019-01-29 17:37:43 +08:00
MMP,想打死他 +1。 为什么要逗号, 因为 list 不能跟 int 相加。
shm7
2019-01-29 19:07:27 +08:00
@dendi009 因为[]离得远还要写 2 个?
kaneg
2019-01-29 20:44:43 +08:00
代码行数是少了,但真的是影响可读性。
这个如果在我们公司里,Code Review 是不给过的。
Raisu
2019-01-29 21:38:52 +08:00
开除吧,看不懂不一定是自己问题
holy_sin
2019-01-29 21:55:10 +08:00
@Raisu 老哥这个是 leetcode 的一个用户,哈哈
mmdsun
2019-01-30 00:01:17 +08:00
请问 py 为什么这样设计?既然()就是元祖的意思为啥还要多加一个逗号(1,)?
PulpFunction
2019-01-30 04:42:41 +08:00
这个问题有意思哎 在线程传参数遇到过
zeanzhou
2019-01-30 04:55:09 +08:00
@mmdsun #15 #15 是不是因为括号还表示优先运算?
ysc3839
2019-01-30 05:49:59 +08:00
@mmdsun
@zeanzhou 是的。
billwsy
2019-01-30 06:08:33 +08:00
应该写个 append,干嘛+=
master13
2019-01-30 08:14:48 +08:00
看到大家都要开除这个答案,我就放心了

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

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

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

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

© 2021 V2EX