Python小白,向各位大佬请教一个关于逗号使用的Python问题

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


Python小白,向各位大佬请教一个关于逗号使用的Python问题

30 回复

加了逗号代表那个是元组


我无法理解你的问题

逗号标识这是一个迭代器的 +=,也就是你代码中的_dp, 去掉逗号的话就是一个 int 的+=操作了,所以会在 return dp[n]报一个'int' object is not iterable的错误
![]( )

写这个代码的开除吧。。。

相当于 dp += [min(xx) + 1]


这么写代码的确应该开除…

这么写想打死他

如果都是这种套路,人家这么写就是不想被开除

…学习了

MMP,想打死他 +1。 为什么要逗号, 因为 list 不能跟 int 相加。

因为[]离得远还要写 2 个?

代码行数是少了,但真的是影响可读性。
这个如果在我们公司里,Code Review 是不给过的。

开除吧,看不懂不一定是自己问题

老哥这个是 leetcode 的一个用户,哈哈

请问 py 为什么这样设计?既然()就是元祖的意思为啥还要多加一个逗号(1,)?

这个问题有意思哎 在线程传参数遇到过

#15 #15 是不是因为括号还表示优先运算?


是的。

应该写个 append,干嘛+=

看到大家都要开除这个答案,我就放心了

因为括号是一个正常的语法啊,这在其他编程语言中处理基本是一样的

括号本身是强制提升运算优先级啊,加逗号才是 tuple


兄弟你是不是很少用 if 语句啊。。。
括号在 if 语句经常使用啊,第一是提升运算符优先级,第二是 if 换行啊,当你写了一个很长的 if 语句,PEP8 建议使用()隐形换行。。。

上次手抖,写接口返回给前端的时候
写了句
data = list(my_dict.values()),
真的是血炸,找了很久的 bug…

兄弟你肯定没有认真看书,或都看了一些很二的教程。元组定义就是用逗号分隔的一组元素,跟括号根本没有关系好吧。只是因为大多情况下在表达式中需要用括号做定界符。a=1, a=1,2,3 a 就是元组了,根本不用括号。

不好意思了。没学过 py 只是好奇语法。现在明白了。感谢回复。

我之前写代码不小心加上逗号,debug 找了一会,主要是在修改同事代码,语句有点长没注意到,一直觉得这是语法的坑。用这个特性的该打

为了省点眼神,还是写成 tuple(a)

回到顶部