鱼C论坛

 找回密码
 立即注册
查看: 1540|回复: 13

[已解决]求助这个next怎么用

[复制链接]
发表于 2022-1-17 01:32:47 | 显示全部楼层 |阅读模式
9鱼币
力扣里给出了定义,不可更改。

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

以及如何使用这个类
(传入的参数应该是一个列表例如[1,2,3,4,5])

# 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. 两数相加 的题解,希望对你有帮助:
  1. # Definition for singly-linked list.
  2. # class ListNode:
  3. #     def __init__(self, val=0, next=None):
  4. #         self.val = val
  5. #         self.next = next
  6. class Solution:
  7.     def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
  8.         a = []
  9.         while(l1):
  10.             a.append(str(l1.val))
  11.             l1 = l1.next
  12.         a = int(''.join(a[::-1]))
  13.         b = []
  14.         while(l2):
  15.             b.append(str(l2.val))
  16.             l2 = l2.next
  17.         b = int(''.join(b[::-1]))
  18.         c = a + b
  19.         c = [int(i) for i in str(c)]
  20.         head = None
  21.         tail = None
  22.         for i in c:
  23.             tail = head
  24.             head = ListNode()
  25.             head.val = i
  26.             head.next = tail
  27.         return head
复制代码

最佳答案

查看完整内容

以下是我之前在力扣题目 2. 两数相加 的题解,希望对你有帮助:
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-17 01:32:48 | 显示全部楼层    本楼为最佳答案   
从编程到植发 发表于 2022-1-17 18:41
这个代码我试了一下,打印出来的结果是逆序的呀

以下是我之前在力扣题目 2. 两数相加 的题解,希望对你有帮助:
  1. # Definition for singly-linked list.
  2. # class ListNode:
  3. #     def __init__(self, val=0, next=None):
  4. #         self.val = val
  5. #         self.next = next
  6. class Solution:
  7.     def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
  8.         a = []
  9.         while(l1):
  10.             a.append(str(l1.val))
  11.             l1 = l1.next
  12.         a = int(''.join(a[::-1]))
  13.         b = []
  14.         while(l2):
  15.             b.append(str(l2.val))
  16.             l2 = l2.next
  17.         b = int(''.join(b[::-1]))
  18.         c = a + b
  19.         c = [int(i) for i in str(c)]
  20.         head = None
  21.         tail = None
  22.         for i in c:
  23.             tail = head
  24.             head = ListNode()
  25.             head.val = i
  26.             head.next = tail
  27.         return head
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-17 06:38:36 | 显示全部楼层
因为列表就是一个可迭代对象
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-17 06:39:06 | 显示全部楼层
所有序列都是可迭代对象
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-1-17 07:49:47 | 显示全部楼层
python爱好者. 发表于 2022-1-17 06:39
所有序列都是可迭代对象

那么我该如何使用这个类呢,如果直接传参到val里面,val就是整个列表了
题目要求是每次next返回下一个元素
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-17 08:13:11 From FishC Mobile | 显示全部楼层
next 不是下一个元素,而是下一个链表(包含一个值 val,和一个 next)
给你个代码作参考吧:
  1. class ListNode:
  2.         def __init__(self, val = 0, next = None):
  3.                 self.val = val
  4.                 self.next = next

  5. # 创建单链表头
  6. head = None
  7. tail = None

  8. # 举例列表
  9. arr = [14, 65, 32, 78, 9]

  10. # 将列表赋值进单链表
  11. for i in arr:
  12.         tail = head
  13.         head = ListNode()
  14.         head.val = i
  15.         head.next = tail

  16. # 打印单链表
  17. while head:
  18.         print(head.val)
  19.         head = head.next
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-17 08:14:29 | 显示全部楼层
不知道楼主是不是这个意思:
  1. class ListNode:
  2.      def __init__(self, val=[0]):
  3.          self.val = iter(val)
  4.      def next(self):
  5.          return next(self.val,"没有啦!都被您掏空了!")

  6. listNode = ListNode(val = [1,2,3,4,5,6])
  7. listNode.next()
  8. 1
  9. listNode.next()
  10. 2
  11. listNode.next()
  12. 3
  13. listNode.next()
  14. 4
  15. listNode.next()
  16. 5
  17. listNode.next()
  18. 6
  19. listNode.next()
  20. “没有啦!都被您掏空了!”
复制代码


有用的话,请给个好评!!!

打字不易,思考不易,请给个好评!!!
兄弟!给个好评!求求了!!!

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-17 10:09:43 From FishC Mobile | 显示全部楼层
python爱好者. 发表于 2022-1-17 08:14
不知道楼主是不是这个意思:




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

评分

参与人数 1鱼币 +2 收起 理由
python爱好者. + 2 点赞!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-1-17 18:41:05 | 显示全部楼层
傻眼貓咪 发表于 2022-1-17 08:13
next 不是下一个元素,而是下一个链表(包含一个值 val,和一个 next)
给你个代码作参考吧:

这个代码我试了一下,打印出来的结果是逆序的呀
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-1-17 18:44:02 | 显示全部楼层
python爱好者. 发表于 2022-1-17 08:14
不知道楼主是不是这个意思:

类的定义不可以修改的,不过还是谢谢你,又学到了知识
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-17 18:44:47 | 显示全部楼层
不用谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-17 19:24:10 | 显示全部楼层
从编程到植发 发表于 2022-1-17 18:41
这个代码我试了一下,打印出来的结果是逆序的呀

正或逆可以自己随意更改
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-17 19:25:48 | 显示全部楼层
从编程到植发 发表于 2022-1-17 18:41
这个代码我试了一下,打印出来的结果是逆序的呀

  1. class ListNode:
  2.     def __init__(self, val = 0, next = None):
  3.         self.val = val
  4.         self.next = next

  5. # 创建单链表头
  6. head = None
  7. tail = None

  8. # 举例列表
  9. arr = [14, 65, 32, 78, 9]

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

  16. # 打印单链表
  17. while head:
  18.     print(head.val)
  19.     head = head.next
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-17 19:47:14 | 显示全部楼层
next返回下一个元素
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-30 13:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表