Python 使用chatGPT帮忙写一个有序集类 OrderedSet

需求:需要实现一个有序的集合,像python普通集合一样,除了
它是有序的

我这边穿插着使用了gpt3.5和gpt4,发现确实还是gpt4好用,一分钱一分货啊

问:我的要求是这样,data是一个集合,往里面放了2,1,3,2,3,1后里面的数据应该是2,1,3我希望顺去不乱,同时内容不重复
gpt的回答:
在这里插入图片描述
如果常用SortedSet的人能一眼看出来它在胡说八道,实际上SortedSet疑似是排序集合,它实现的是“排序集合”,而不是有序集合,实际上输出的结果是1,2,3,我期望的输出结果是2,1,3

那干脆要求他直接写一个类实现好了

class OrderedSet:def __init__(self, iterable=None):self.items = []self.dict = {}if iterable is not None:for item in iterable:self.add(item)def __len__(self):return len(self.items)def __contains__(self, item):return item in self.dictdef add(self, item):if item not in self.dict:self.dict[item] = Noneself.items.append(item)def discard(self, item):if item in self.dict:del self.dict[item]self.items.remove(item)def __iter__(self):return iter(self.items)

看上去好像好还行,就是少了update和remove方法,要求它补上:

    def remove(self, item):if item in self.dict:del self.dict[item]self.items.remove(item)def discard(self, item):if item in self.dict:del self.dict[item]self.items.remove(item)def clear(self):self.items = []self.dict = {}def pop(self):if self.items:item = self.items.pop()del self.dict[item]return itemelse:raise KeyError('pop from an empty set')def update(self, iterable):for item in iterable:self.add(item)

把代码丢给gpt4,问它有没有可以优化提速的地方,
在这里插入图片描述

from collections import dequeclass OrderedSet:def __init__(self, iterable=None):self.items = deque()self.dict = {}if iterable is not None:self.update(iterable)def __len__(self):return len(self.items)def __contains__(self, item):return item in self.dictdef add(self, item):if item not in self.dict:node = self.items.append(item)self.dict[item] = nodedef remove(self, item):if item in self.dict:node = self.dict[item]self.items.remove(node)del self.dict[item]def discard(self, item):if item in self.dict:node = self.dict[item]self.items.remove(node)del self.dict[item]def clear(self):self.items.clear()self.dict.clear()def pop(self):if self.items:item = self.items.pop()del self.dict[item]return itemelse:raise KeyError('pop from an empty set')def update(self, *iterables):for iterable in iterables:for item in iterable:self.add(item)def __iter__(self):return iter(self.items)def __str__(self):return str(list(self.items))

self.items.append(item)实际是没有返回值的会报错,告诉gpt4问它怎么继续改进

from collections import dequeclass OrderedSet:def __init__(self, iterable=None):self.items = {}self.order = deque()if iterable is not None:self.update(iterable)def __len__(self):return len(self.items)def __contains__(self, item):return item in self.itemsdef add(self, item):if item not in self.items:self.order.append(item)self.items[item] = len(self.order) - 1def remove(self, item):if item in self.items:index = self.items[item]self.order.remove(item)del self.items[item]for key, value in self.items.items():if value > index:self.items[key] = value - 1def discard(self, item):self.remove(item)def clear(self):self.items.clear()self.order.clear()def pop(self):if self.order:item = self.order.pop()del self.items[item]return itemelse:raise KeyError('pop from an empty set')def update(self, *iterables):for iterable in iterables:for item in iterable:self.add(item)def __iter__(self):return iter(self.order)def __str__(self):return str(list(self.order))

感觉好像没问题,但是一看代码还是不太对劲,remove方法居然要遍历所有元素做判断,那时间复杂度不变成O(n)了,想了下python3.6开始就有有序字典了,直接用字典实现不就完了,哪来那么多花里胡哨的操作?
要求gpt4重写一遍,用dict实现OrderedSet:

class OrderedSet:def __init__(self, iterable=None):self.items = {}if iterable is not None:self.update(iterable)def __len__(self):return len(self.items)def __contains__(self, item):return item in self.itemsdef add(self, item):if item not in self.items:self.items[item] = Nonedef remove(self, item):if item in self.items:del self.items[item]else:raise KeyError(item)def update(self, iterable):for item in iterable:self.add(item)def __iter__(self):return iter(self.items)def __str__(self):return str(list(self.items.keys()))

然后问gpt3.5有没有方法实现,让isinstance(OrderedSet,set)为True,
它让我重写__isinstance__方法,实际上这也是胡说八道,根本就没这个方法。。。
gpt4的回答好点:
在这里插入图片描述
实际只要OrderedSet(set)让它继承set类就能实现了,gpt4的至少回到到继承上了
最后再让它写个测试类测试OrderedSet:

def test_ordered_set():# 创建一个空的有序集合ordered_set = OrderedSet()# 测试添加元素ordered_set.add(1)ordered_set.add(2)ordered_set.add(3)print("After adding elements:", ordered_set)  # Expected output: [1, 2, 3]# 测试添加重复元素ordered_set.add(2)print("After adding duplicate element:", ordered_set)  # Expected output: [1, 2, 3]# 测试更新ordered_set.update([4, 5, 6])print("After updating with iterable:", ordered_set)  # Expected output: [1, 2, 3, 4, 5, 6]# 测试使用另一个有序集合更新,其中包含重复元素another_ordered_set = OrderedSet([3, 4, 5, 6, 7, 8])ordered_set.update(another_ordered_set)print("After updating with another OrderedSet:", ordered_set)  # Expected output: [1, 2, 3, 4, 5, 6, 7, 8]# 测试删除元素ordered_set.remove(4)print("After removing element:", ordered_set)  # Expected output: [1, 2, 3, 5, 6, 7, 8]if __name__ == "__main__":test_ordered_set()

总结:gpt3.5大多数时候都在胡说八道,gpt4如果要求详细可以给出可用的代码
个人感觉原因很大在于gpt3.5的输入长度限制死了,导致它其实根本看不到上下文的对话(因为token超4000了),所以大部分时候都在胡说

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/14853.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT帮忙出Scrath少儿编程的教程

最近在思考,如何做一份关于Scrath少儿编程的教程,既可以满足目前对小孩的教学内容,也可以做一份相对完善的教程,于是就与ChatGPT开始了一场简单的对话,其中只是初步的目录,如大家有兴趣可以帮忙转发&#x…

闲来无事,摸鱼时让 chatgpt 帮忙,写了一个 console 样式增强库并发布 npm

前端Q 我是winty,专注分享前端知识和各类前端资源,乐于分享各种有趣的事,关注我,一起做个有趣的人~ 公众号 点击上方 前端Q,关注公众号 回复加群,加入前端Q技术交流群 话不多说,直接…

三星被曝因ChatGPT泄露芯片机密!韩媒惊呼数据「原封不动」直传美国,软银已禁止员工使用...

点击上方“AI遇见机器学习”,选择“星标”公众号 第一时间获取价值内容 明敏 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 三星引入ChatGPT不到20天,就发生3起数据外泄事件?! 其中2次和半导体设备有关,1次和内部会议有关…

ChatGPT 泄露对话记录,CEO:开源库的错误

ChatGPT 泄露对话记录,CEO:开源库的错误 ChatGPT 会在界面左侧显示你过去与 AI 进行过的对话,并将内容保存在系统中,方便你时不时回顾之前的内容。只不过最近有用户发现,自己的聊天历史中显示了不曾发生过的对话内容&a…

总结吴恩达 ChatGPT Prompt 免费课程

吴恩达联合 OpenAI 官方,发布了免费的 ChatGPT Prompt 视频教程。 链接:https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/2/guidelines 视频纯英文,小姐姐的英伦腔,听得很舒服。 我看了第一集,讲了四个技巧&…

ChatGPT的好与坏

ChatGPT是一种人工智能语言模型,它在各种应用中被广泛使用。它的好处是,它可以提供快速、精准的答案,解决用户的问题,并提供各种信息和建议。ChatGPT的工作原理是基于先前的大量数据集和模式识别,所以它的回答具有很高…

最流行的 WebAssembly 语言,会是 JavaScript 吗?

对于网络平台而言,WebAssembly 的出现无疑是意义重大的,它能让各种语言编写的代码以接近原生的速度在 Web 中运行——那么在各种语言中,JavaScript 会是其中最流行的吗? 原文链接:https://thenewstack.io/will-javascr…

【ChatGPT】ChatGPT时代 —— 软件开发的末日来临了?

在这篇文章中,我将说明像 ChatGPT 这样的生成式人工智能 (GAI) 将如何在十年内取代软件工程师。 预测被离散化为 5 个阶段,总体轨迹趋向于完全接管。 但首先,一个简短的前言。 目录 1、关于AI的预测谬误 谬误一:AI只会取代脚本小子

chatgpt赋能python:Python编写聊天程序

Python编写聊天程序 Python是一种优秀的编程语言,常被用来开发网络应用程序。在这个不断发展的数字时代,人们越来越需要在线沟通工具来实现快速交流。像即时聊天这类工具已经成为生活中必不可少的组成部分。因此,在这篇文章中,我…

高考书单丨关于理想,我从来没选择放弃

高 考 主题书单 关于考试升学技巧 也关乎对大学教育的思考 近期,“男子为考清华复读14年”登上微博热搜,该男子名叫唐尚珺。据了解,今年是他复读的第14年,此次高考也是他参加的第15次高考。2009年,他参加了人生中第一场…

Jeff Dean万字总结!图解谷歌2022年AIGC、LLM、CV三大领域成就

本文来源 新智元 编辑:编辑部 【新智元导读】2022年,谷歌在ML领域取得了哪些新进展?Jeff Dean发万字长文总结。 2022年,谷歌在机器学习方面有什么进展? Google Research高级研究员兼高级副总裁Jeff Dean一文帮你总结…

Jeff Dean万字总结出炉!图解谷歌2022年AIGC、LLM、CV三大领域成就!

点击下方卡片,关注“CVer”公众号 AI/CV重磅干货,第一时间送达 点击进入—>CV微信技术交流群 转载自:新智元 【导读】2022年,谷歌在ML领域取得了哪些新进展?Jeff Dean发万字长文总结。 2022年,谷歌在机器…

超详超硬Jeff Dean万字总结火热出炉!图解谷歌2022年AIGC、LLM、CV三大领域成就

报道 编辑:编辑部 【导读】2022年,谷歌在ML领域取得了哪些新进展?Jeff Dean发万字长文总结。 2022年,谷歌在机器学习方面有什么进展? Google Research高级研究员兼高级副总裁Jeff Dean一文帮你总结! 昨天…

讯飞高管解读财报:追求高质量发展 持续促进人均效能提升

雷递网 雷建平 4月22日 科大讯飞(002230.SZ)日前发布2022年报及2023年一季报。财报显示,科大讯飞2022年营收188.2亿,较上年同期的183.14亿元增长2.77%;归母净利润为5.61亿元。 科大讯飞2023年第一季营收28.88亿&#x…

科大讯飞的2022:夯实“根据地”业务,以技术创新点燃大模型产业落地的“星星之火”...

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 4月20日晚,科大讯飞正式公布2022年度及2023年度第一季度业绩报告。财报数据显示,公司2022年度实现营业收入188.20亿元,同比增长2.77%,实现毛利76.84亿元,较上年增长…

COIG:首个大规模、可商用的中文开源指令数据!

文 | ZenMoore ChatGPT 出现后的这几个月,整个学界和业界的疯狂想必大家都已经看到了。 然而,在背各种各样的动物还有山海经怪兽的英语单词的时候,其实不妨停下来想一想复现中文 ChatGPT 到底缺什么?缺大模型吗?缺工程…

从GPT-1到GPT-4,再到未来的GPT-5,一文带你了解GPT的前世今生和未来!

原文:从GPT-1到GPT-4,再到未来的GPT-5,一文带你了解GPT的前世今生和未来! - 腾讯云开发者社区-腾讯云 引言 ChatGPT爆火的余热还没退去,GPT-4又横空出世,各大媒体都争相报道,朋友圈也在不断刷屏&#xff…

5张图看完《西游记》| 经典名著思维导图分享

📕四大名著之一《西游记》是家喻户晓的名著经典 📕被拍成电视剧后更是老少都爱 🖊作为中考名著,它的重要性就不用过多强调了 🖊今天奇奇就给大家整理了《西游记》的思维导图 - 💯包含有人物特点、人物经历…

云从大模型现场真机演示!考中考堪比ChatGPT,还秀了一波代码能力,创始人周曦:三种递进方式颠覆传统交互...

杨净 发自 凹非寺量子位 | 公众号 QbitAI 云从大模型,来了! AI四小龙最年轻的一个,交出了AI 2.0时代下的首份答卷。 大模型取名从容,结果在发布会现场,它直接与ChatGPT、GPT-4一较高下。 据称,最终评分结果…

清华博士、人大附中高级教师和渊:ChatGPT时代,孩子需要培养哪些能力?

5 月 13 日晚 20 点,清华大学理学博士、中国人民大学附属中学高级教师和渊老师,与图灵联合创始人刘江总编就“人工智能时代,孩子要如何做好准备”这一主题,进行了长达 2 个小时的深刻对谈。 和渊老师基于多年的教学经验&#xff0…