从编程到植发 发表于 2022-1-17 01:32:47

求助这个next怎么用

力扣里给出了定义,不可更改。

但是没有iter和next方法,为什么可以迭代

以及如何使用这个类
(传入的参数应该是一个列表例如)

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

傻眼貓咪 发表于 2022-1-17 01:32:48

从编程到植发 发表于 2022-1-17 18:41
这个代码我试了一下,打印出来的结果是逆序的呀

以下是我之前在力扣题目 2. 两数相加 的题解,希望对你有帮助:# Definition for singly-linked list.
# class ListNode:
#   def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
      a = []
      while(l1):
            a.append(str(l1.val))
            l1 = l1.next
      a = int(''.join(a[::-1]))
      b = []
      while(l2):
            b.append(str(l2.val))
            l2 = l2.next
      b = int(''.join(b[::-1]))
      c = a + b
      c =
      head = None
      tail = None
      for i in c:
            tail = head
            head = ListNode()
            head.val = i
            head.next = tail
      return head

python爱好者. 发表于 2022-1-17 06:38:36

因为列表就是一个可迭代对象

python爱好者. 发表于 2022-1-17 06:39:06

所有序列都是可迭代对象

从编程到植发 发表于 2022-1-17 07:49:47

python爱好者. 发表于 2022-1-17 06:39
所有序列都是可迭代对象

那么我该如何使用这个类呢,如果直接传参到val里面,val就是整个列表了
题目要求是每次next返回下一个元素

傻眼貓咪 发表于 2022-1-17 08:13:11

next 不是下一个元素,而是下一个链表(包含一个值 val,和一个 next)
给你个代码作参考吧:class ListNode:
        def __init__(self, val = 0, next = None):
                self.val = val
                self.next = next

# 创建单链表头
head = None
tail = None

# 举例列表
arr =

# 将列表赋值进单链表
for i in arr:
        tail = head
        head = ListNode()
        head.val = i
        head.next = tail

# 打印单链表
while head:
        print(head.val)
        head = head.next

python爱好者. 发表于 2022-1-17 08:14:29

不知道楼主是不是这个意思:
class ListNode:
   def __init__(self, val=):
         self.val = iter(val)
   def next(self):
         return next(self.val,"没有啦!都被您掏空了!")

listNode = ListNode(val = )
listNode.next()
1
listNode.next()
2
listNode.next()
3
listNode.next()
4
listNode.next()
5
listNode.next()
6
listNode.next()
“没有啦!都被您掏空了!”


有用的话,请给个好评!!!
{:10_257:}{:10_297:}{:10_281:}{:10_298:}
打字不易,思考不易,请给个好评!!!
兄弟!给个好评!求求了!!!
{:10_254:}{:10_254:}{:10_254:}{:10_254:}

傻眼貓咪 发表于 2022-1-17 10:09:43

python爱好者. 发表于 2022-1-17 08:14
不知道楼主是不是这个意思:




{:10_257:}{:10_257:}
楼主的类名字已经说明了是个 ListNode 也就是链表,链表和列表不同,你说指的是 Python 里的迭代 next,但楼主的问题是来自力扣题目(因为我做过,所以大概知道)。

从编程到植发 发表于 2022-1-17 18:41:05

傻眼貓咪 发表于 2022-1-17 08:13
next 不是下一个元素,而是下一个链表(包含一个值 val,和一个 next)
给你个代码作参考吧:

这个代码我试了一下,打印出来的结果是逆序的呀

从编程到植发 发表于 2022-1-17 18:44:02

python爱好者. 发表于 2022-1-17 08:14
不知道楼主是不是这个意思:




类的定义不可以修改的,不过还是谢谢你,又学到了知识

python爱好者. 发表于 2022-1-17 18:44:47

不用谢

傻眼貓咪 发表于 2022-1-17 19:24:10

从编程到植发 发表于 2022-1-17 18:41
这个代码我试了一下,打印出来的结果是逆序的呀

正或逆可以自己随意更改

傻眼貓咪 发表于 2022-1-17 19:25:48

从编程到植发 发表于 2022-1-17 18:41
这个代码我试了一下,打印出来的结果是逆序的呀

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

# 创建单链表头
head = None
tail = None

# 举例列表
arr =

# 将列表赋值进单链表
for i in arr[::-1]: # 逆向输入
    tail = head
    head = ListNode()
    head.val = i
    head.next = tail

# 打印单链表
while head:
    print(head.val)
    head = head.next

jzfandjyx 发表于 2022-1-17 19:47:14

next返回下一个元素
页: [1]
查看完整版本: 求助这个next怎么用