python - 当我们将 [1] 放在函数末尾和元组末尾时,它是什么意思?

标签 python algorithm python-3.x linked-list

<分区>

我在研究别人的代码,有一部分代码让我很困惑。 [1]remove(head)[1] 中是什么意思?另外,(head, head.next)[i+1 == n] 是什么?有人可以帮助我吗?

代码中,head是链表的头部,来自另一个类ListNode,包含两个函数。一个是head.val,显示head的值。另一个是head.next,它调用链表中的下一个对象。这里 n 是一个整数。此代码尝试从列表末尾删除第 N 个节点并返回其头部。

例如,

给定链表:1->2->3->4->5,且 n = 2。

去掉倒数第二个节点后,链表变为1->2->3->5。

代码如下:

class Solution:
    def removeNthFromEnd(self, head, n):
        def remove(head):
            if not head:
                return 0, head
            i, head.next = remove(head.next)
            return i+1, (head, head.next)[i+1 == n]
        return remove(head)[1]

最佳答案

函数 remove 返回一个元组(实际上是一对)——第一个值是索引,第二个值是被删除的元素。因此,请尝试一次一步地解决您的问题。用它返回的值替换对函数的调用,看看现在方括号是否有意义。

关于python - 当我们将 [1] 放在函数末尾和元组末尾时,它是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45316760/

相关文章:

python - 如何对 pandas 中的列进行多数投票

python - if语句可以是变量吗?

algorithm - 以下方法在 Big-O 表示法方面的时间复杂度是多少?

python - 像 C++11 中那样分配给函数调用

python - 加入语音 channel (discord.py)

python - subprocess.Popen 的输出

python - 无法加载 XGBoost 库 (libxgboost.so)

python - 绘制法国国旗

java - 优先队列,可比

python - 按第 3 级分组和访问列的最有效方法