鱼C论坛

 找回密码
 立即注册
查看: 1394|回复: 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. 两数相加 的题解,希望对你有帮助:
# 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 = [int(i) for i in str(c)]
        head = None
        tail = None
        for i in c:
            tail = head
            head = ListNode()
            head.val = i
            head.next = tail
        return head

最佳答案

查看完整内容

以下是我之前在力扣题目 2. 两数相加 的题解,希望对你有帮助:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 = [int(i) for i in str(c)]
        head = None
        tail = None
        for i in c:
            tail = head
            head = ListNode()
            head.val = i
            head.next = tail
        return head
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-17 06:38:36 | 显示全部楼层
因为列表就是一个可迭代对象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-17 06:39:06 | 显示全部楼层
所有序列都是可迭代对象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

那么我该如何使用这个类呢,如果直接传参到val里面,val就是整个列表了
题目要求是每次next返回下一个元素
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

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

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

# 打印单链表
while head:
        print(head.val)
        head = head.next
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

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

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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




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

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

这个代码我试了一下,打印出来的结果是逆序的呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

类的定义不可以修改的,不过还是谢谢你,又学到了知识
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-17 18:44:47 | 显示全部楼层
不用谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

正或逆可以自己随意更改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 = [14, 65, 32, 78, 9]

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

# 打印单链表
while head:
    print(head.val)
    head = head.next
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-17 19:47:14 | 显示全部楼层
next返回下一个元素
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 10:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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