[英]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.