代码段中元组表示法的说明

时间:2015-01-15 00:04:53

标签: python python-2.7 python-3.x

这是用于2D数组中的峰值元素搜索的代码片段

(subStartR, subNumR) = (0, problem.numRow)
(subStartC1, subNumC1) = (0, mid)
(subStartC2, subNumC2) = (mid + 1, problem.numCol - (mid + 1))

subproblems = []
subproblems.append((subStartR, subStartC1, subNumR, subNumC1))
subproblems.append((subStartR, subStartC2, subNumR, subNumC2))

第一个作业中括号的需要是什么?为什么在附加到列表时会使用它们?

2 个答案:

答案 0 :(得分:4)

append函数只向列表添加一个元素。 extend是多个元素的用途。

所以正在发生的是每一步,子问题是有一个"元组"添加到它的末尾。 inner()表示元组。最后添加print subproblems,您将获得

形式的内容
[(.,.,.,.), (.,.,.,.)]

,即2个元组的列表,每个元组包含4个元素。

(a,b) = (c,d)相当于a=cb=d

答案 1 :(得分:2)

声明如下:

(subStartR, subNumR) = (0, problem.numRow)

将两个值打包到=的RHS上的元组中,并将它们解压缩到LHS上的两个变量中。括号是多余的 - 只是代码

subStartR, subNumR = 0, problem.numRow

并且你会产生相同的效果,减少标点符号噪音: - )

subproblems.append((subStartR, subStartC1, subNumR, subNumC1))
情况非常不同。外部括号表示对append的呼叫;内部的一组将四个值组合成一个元组,并且 是必要的 - 如果你删除它们,只留下外部的那些,你实际上是用四个参数调用append,是不正确的。

不幸的是,一些标点字符(例如逗号和括号)被重载了几个单独的含义,但是,ASCII中没有足够的不同字符来分配它们! - )