python:逗号在= s中做了什么,?

我正在做一个问题,输入是字符串:

["abc","bcd","acef","xyz","az","ba","a","z"]

代码如下所示.

def groupStrings(self, strings):
    groups = collections.defaultdict(list)
    for s in strings:
        tmp=[0]*len(s)
        for i in range(len(s)):
            tmp[i]=(ord(s[i])-ord(s[0]))%26
            tmptuple=tuple(tmp)

        groups[tmptuple] += s,
    return groups.values()

所以在小组[tmptuple] = s中,

如果我删除逗号’,’
我明白了

[["a","b","c","b","c","d","x","y","z"],["a","c","e","f"],["a","z"],["a","z","b","a"]]

代替

[["abc","bcd","xyz"],["acef"],["a","z"],["az","ba"]]

这些组只是不添加整个字符串s,任何人都可以解释为什么逗号会使它不同以及为什么我不能用逗号来做它?

最佳答案 尾随逗号生成一个元组,带有单个元素s.除非存在歧义(例如,使用函数调用parens),Python不需要括号来创建元组;除了空元组(())之外,你通常可以用逗号制作元组,根本不用括号.在这种情况下,单个尾随逗号s ,,等同于(s,).

由于组具有列表值,这意味着do = s等于.append(s)(从技术上讲,它更接近.extend((s,)),但最终结果是相同的).有人可能试图保存一些按键.

如果省略了逗号,它将执行list = str,将str解释为一系列字符,并使用每个生成的len 1字符串扩展列表,如您所观察到的那样.

点赞