ChatGPT教你用Python实现BinarySearchTree详解
作者:ZzT 发布时间:2023-11-18 15:26:18
前言
至今,ChatGPT 已经火了很多轮,我在第一轮的时候注册了账号,遗憾的是,没有彻头彻尾好好地体验过一次。最近这一次火爆,ChatGPT 确实出圈了,各行各业的人们都在晒,趁着周末,我也小试了一把。
这篇文会介绍我使用 ChatGPT 的过程以及使用时的一些感悟,最后浅谈下我对 ChatGPT 的一些理解,不喜勿喷哈~
我的问题是:我是一个 Java 程序员,现在想了解 Python,切入点是如何用 Python 实现 BinarySearchTree,我想在这个过程中更多的了解 Python 的语法,不注重算法实现。
下面给大家看下我问 ChatGPT 的过程。(多图预警!!!)
ChatGPT 截图
我会挑选一些有代表性的内容展示给大家,事实上我问了更多的语法细节
首先,ChatGPT 直接"意识"到我想知道 python 中的泛型要如何写,并给出了相应的解释。
然后,代码上,ChatGPT 不仅给出了 BinarySearchTree 的定义,还附加了 insert 等一些操作方法,注意,这里并没有算法的实现,是 ChatGPT 知道我问题的重点在语法,不是算法实现?(细思极恐)
最后有个小瑕疵是,Comparable 需要 import,代码中没写。
我们继续看
这里对 Optional 的上下文关联没有做好,如果还是根据 Optional[BinaryNode[AnyTyple]] 做解释,会更好。但有一说一,还是清楚的解决了我的问题。
至此,我迅速了解了 python 的 Class 如何定义,泛型如何定义,Comparable 怎么用,以及一些附加的语法(大概耗费了 1.5 小时)
然后,我开始尝试自己实现方法细节,比如 contains 方法,在这个过程中仍会遇到一些小问题
这里可以看到,我的问题没有主动帮忙断句,是一段代码混着我的问题一起问的(因为我不知道怎么换行,一按 enter\command + enter 就直接提问题 - -)
但是,ChatGPT 回答的情况依然令我满意,我们工作中遇到这种问题可能会卡一会,因为这个问题太具体了,现在的搜索引擎无法解决这么具体的问题,如果身边有懂 python 的人可能会瞬间帮你解答,但现在有了 ChatGPT,这种具体的问题也能被瞬间解答了,很优秀。
对 ChatGPT 的一些感悟
首先声明,我对 ChatGPT 的原理只是略知一二,技术细节还没详细调研。相信详细调研后,感悟上会少一些惊艳,毕竟我们对未知的、不了解的领域会保留敬畏之心。
下面我只谈一谈我作为一个 chatGPT 用户,使用上的体验:
1、ChatGPT 成为下一代搜索引擎,毋庸置疑
通过这次体验,一个最直接的感受是,我能直截了当地问我当下遇到问题,省去了将问题抽象成通用的问题的步骤,比如我就想知道 public class BinarySearchTree<AnyType extends Comparable<? super AnyType>> 用 python 要怎么写
用 Google 搜索,你不可能直接在搜索框输入 将下面 java 代码用 python 实现 public class BinarySearchTree<AnyType extends Comparable<? super AnyType>>
如果直接输入,会得到
因为 Google 无法理解你真正的诉求是什么,只会根据问题中的关键字检索出你需要的信息,所以更多的结果是 Java 实现的 BinarySearchTree
假如我就是要用 Google 解决这个问题,我可能需要问的是:
Python 中如何使用泛型
Python 中的 Comparable 具体如何使用?
根据检索的知识碎片自己加以理解并组合起来
尝试写出 Python 代码
解决各种 IDE 中提示的编译问题,遗憾的是,每遇到一个问题,我又要重复上面的过程
但对 ChatGPT 来说,他似乎更懂你想要问什么,省去了你在用 Google 搜索的 12345 步,大大提升了解决问题的效率。
2、上下文关联能力强
顺着 ChatGPT 更懂你 的话题说,我们遇到的问题通常不是一次性就能找到答案的,更多是一个问题链,需要一环扣一环的解决。ChatGPT 做到了在一个 Chat 中,让你的所有问题关联起来,好像他帮你抽象出了话题的主题是什么,让你不需要在问每个问题的时候都把背景交代的非常清楚,这也是一种提效。
3、未来的可能性
首先,ChatGPT 的回答并不是 100% 正确的,仍需要人去甄别是否是自己想要的答案。但我相信随着用户越来越多,ChatGPT 会被进一步训练,继续进化,正确率会持续上升。
下一代搜索引擎就不多说了,微软已经开始推出 new bing 了。
另外想说的是,ChatGPT 能赋能语音交互,进一步提效,由于 ChatGPT 还不涉及图片视频领域,并且目前文字转语音以及语音转文字的技术已经成熟,如果将 ChatGPT 做成语音机器人,我觉得成为初代钢铁侠中的贾维斯不是问题。
再有就是,openAI 的部分模型是开放的,垂直业务完全可以利用模型的能力,解决当下的重复劳动问题,例如客服。
整体来说,ChatGPT 的出现让我们获取知识的效率进一步提升,后面对很多行业都会有冲击,反正我是被这东西搞的瑟瑟发抖了。那么,大家觉得什么样的程序员不会被 chatGPT 取代?
来源:https://juejin.cn/post/7201696941331922999


猜你喜欢
- 区别:xx:公有变量,所有对象都可以访问;xxx:双下划线代表着是系统定义的名字。__xxx:双前置下划线,避免与子类中的属性命名冲突,无法
- html结构如下<div class="row"> <div class="co
- 赠送QQ秀流程是QQ秀商城关键流程之一,占了收入最直接的一部分。它的优化是后续商城流程优化的重要参考。OK,现在就用TA做例子,分享一下流程
- 一、用属性替代 getter 或 setter 方法以下代码中包含手动实现的 getter(get_ohms) 和 setter(set_o
- 本文研究的主要是Python内建模块struct的相关内容,具体如下。Python中变量的类型只有列表、元祖、字典、集合等高级抽象类型,并没
- transforms按住Ctrl查看transforms的源码可以知道,transforms就是一个python文件,里面定义了很多类,每一
- python 判断是否为正小数和正整数的实例实现代码:def check_float(string): #支付时,输入的金额可能
- 1. 特定版本的python-opencv安装在https://www.lfd.uci.edu/~gohlke/pythonlibs/#op
- python中字符串数组如何逆序排列?下面给大家介绍几种方法:1、数组倒序:原始元素的倒序排列(1)切片>>> arr =
- 如何修改被表单引用的ASP页面?formhandler.asp<HTML><BODY BGCOLOR="
- 目录实例演示1. axios上传普通文件:2. 大文件导入:结语这次我要讲述的是在React-Flask框架上开发上传组件的技巧。我目前主要
- 前言一般的方法此处也不列举了,还是有很多的,如双层循环判断是否相等,或新建数组比较再push等等,需要注意的是,使用splice方法移除元素
- 1、查看数据库的字符集数据库的字符集必须和Linux下设置的环境变量一致,不然会有乱码。以下两个sql语句都可以查到:select * fr
- MySQL 数据表是由行和列构成的,通常把表的“列”称为字段(Field),把表的&
- 一般情况下x,y,z = 1,2,3print("x:",x)print("y:",y)print(
- MySQL如何查看元数据锁阻塞在哪里操作步骤:1、session 1 执行: start transaction;  
- 前言Django自带一个用户认证系统,用于处理用户账户、群组、许可和基于cookie的用户会话。Django的认证系统包含了身份验证和权限管
- 前言本文主要跟大家介绍了关于Vue实例中生命周期created和mounted区别的相关内容,分享出来供大家参考学习,下面话不多说了,来一起
- 先使用vue cli构建一个自己的vue项目1.npm i -g vue-cli2.vue init webpack sell (sell是
- mysql允许在相同列上创建多个索引,无论是有意还是无意,mysql需要单独维护重复的索引,并且优化器在优化查询的时候也需要逐个地进行考虑,