【问题标题】:What does [1] mean when we put it in the end of a function and in the end of a tuple? [duplicate]当我们将它放在函数的末尾和元组的末尾时,[1] 是什么意思? [复制]
【发布时间】:2017-07-26 03:09:21
【问题描述】:

我正在研究别人的代码,部分代码让我很困惑。 [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]

【问题讨论】:

  • 当它没有放在函数的末尾时它会做什么。 i+1 == n 的评估结果是什么? int(True)int(False) 的评估结果是什么?如果你能回答所有这些,你的问题就解决了。
  • @AlexanderHuszagh 我编辑了这篇文章。希望这次很清楚。
  • 问题很明确。但答案也很明确。我问你是为了让你想想代码的作用:[] 做了什么,例如,当在列表上调用时? int(True) 是做什么的?知道了就可以看懂代码了。
  • 看 [1]:stackoverflow.com/questions/6422228/… 这可能会有所帮助

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


【解决方案1】:

函数remove返回一个元组(实际上是一对)——第一个值是索引,第二个值是被移除的元素。所以试着一步一步解决你的问题。用它返回的值替换对函数的调用,看看现在方括号是否有意义。

【讨论】:

    猜你喜欢
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    相关资源
    最近更新 更多