类型的Python对象没有len()



我试图解决leetcode中的一个简单问题。来源:https://leetcode.com/problems/remove-duplicates-from-sorted-list/我几乎用for循环解决了它,但我得到了一个错误,类型为ListNode的Python对象没有len()。我尝试使用调用() orlen(),但我不知道或不理解这些内置方法是如何工作的。我在很多地方读过书,但混乱越来越大。如果有人能帮我,那就太好了。

注:我知道while循环的解决方案更好,但我希望这个能以某种方式工作,如果可能的话。或者至少得到一些输出。'

**# 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类是如何设计工作的,但是如何能够在你自己的类的实例上调用len的答案是定义__len__dunder方法。正如其他人在评论中指出的那样,您还需要定义__getitem__方法,以便能够执行head[i-1-j]之类的操作。它可能看起来像这样(只是猜测实际定义,因为我不清楚您希望该类如何工作):

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

更多的under方法在这里。

最新更新