簡體   English   中英

Python object 類型沒有 len()

[英]Python object of type has no len()

我試圖在 leetcode 中解決一個簡單的問題。 這是源代碼: https://leetcode.com/problems/remove-duplicates-from-sorted-list/我幾乎用 for 循環解決了它,但我得到一個錯誤 Python object ListNode 類型沒有 len()。 我曾嘗試使用call () 或len (),但我不知道或不了解這些內置方法是如何工作的。 我看了很多地方,但亂七八糟的越來越大。 如果有人可以幫助我,那就太好了。

PS 我知道 while 循環的解決方案更好,但如果可能的話,我希望這個解決方案能夠以某種方式工作。 或者至少得到一些 output。`

**# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, sequence, val=0, next=None):
#         self.val = val
#         self.next = next
#         self.sequence = sequence

class Solution:

    def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:**
        j=0

        for i in range(0, len(head) - 1):

            if head[i-1-j] == head[i-j]:

                head.remove(head[i-j])
                j += 1
        head.remove(head[-1])    
        return head

`

我無法真正理解您的ListNode class 是如何設計工作的,但是如何能夠在您自己的 class 的實例上調用len的答案是為 class 定義__len__ dunder 方法。正如其他人指出的那樣注釋,您還需要定義__getitem__方法才能執行head[i-1-j] 它可能看起來像這樣(只是猜測實際定義,因為我不清楚你希望 class 如何工作):

class ListNode:
    def __init__(self, sequence, val=0, next=None):
        self.val = val
        self.next = next
        self.sequence = sequence

    def __len__(self):

        return len(self.sequence)   # Maybe? Or whatever you want len to return

    def __getitem__(self, i):

        return self.sequence[i]     # Maybe? Or whatever you want [ ] to return

更多關於 dunder 方法的信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM