有关 Python 的疑问

359 天前
 sonnyclarity492

背景:非计算机科班出身,目前忙于科研论文写作;完整深入的学习了 C 语言; Python 学习了基本的判断、循环、函数,换句话说,只会 C 语言那套;没有学习面向对象的知识。

疑问 1:Python 中有很多语法糖,例如 enumerate() 和 zip() 函数。举这两个例子是因为我不会用,但 copilot 给出了提示,结果也确实好用且正确。有必要针对这种语法糖深入学习吗?

疑问 2 ,是否有必要完整学习 Python 的语法?举个数据分析的例子。

在使用列表时,如何区分 ['A'], ['A', 'B', 'C'] 以及 [['A'], ['B'], ['C']]。

元组又是什么?为什么有时限定元组输入,和列表有何区别?即 (1, 5) 和 [1, 5] 有何区别?

疑问3:研究中涉及到修改某个库中的参数,将输出改为 3 位小数。网络上查找了相关资料,用一个自定义函数继承,然后再修改,然而我看不懂,最终直接修改了库代码。

目前暂时就这三类问题,恳请各位大佬解释。

1462 次点击
所在节点    程序员
16 条回复
taogen
359 天前
已知 OP 为了写论文学习 Python 。我的回答是:

1. 不需要。代码写多了自然会选择最简单的方式。
2. 不需要。看下常用基础,够用就行。Learn Python in Y minutes https://learnxinyminutes.com/docs/python/
3. 代码能跑就行。
coderluan
359 天前
没必要完全学,一般学下数据类型,逻辑运算,常用函数就行,而楼主你提的问题就是普通的数据类型和常用函数,不涉及什么语法糖或者完全语法,都是入门问题,得学。
adoal
359 天前
顺便说一下,enumerate 和 zip 不是语法糖,也跟你“没有学习面向对象的知识”无关。可以算是函数式编程(跟面向对象编程平等的另一种范式)里比较基础的用法。
iyaozhen
359 天前
1. 可以不学,正常写(多层) for 循环也行
2. 你说的这个和完整语法没啥关系,['A'], ['A', 'B', 'C'] 以及 [['A'], ['B'], ['C']] 就是不一样的东西,一下子也不知道怎么给你解释(因为我 C 忘的差不多了)。基础的语法还是得学一学。元组你可以不了解,只用 list 就行
3. 这个问题信息太少。改源码的事情怎么说呢,如果你是一次性的,就干吧。我们做工程的一般不这样,因为项目会持续迭代。

最后你说的这些和面向对象没啥关系,再说 python 照样可以面向过程的函数式
Lee2019
359 天前
如果后面不打算找 python 开发相关的工作,个人任务三个问题的答案是:
1 ,不需要
2 ,没必要,能把论文的数据跑出来就行。
3 ,继承还直接改源码都可以,其实你都改源码了,直接把继承一样的,殊途同归,能跑通就行,缺点就是你的代码换一个环境就跑不起来了,还得现去改依赖库的源码。
SeaRecluse
359 天前
1.不需要 语法糖太多的代码我一般 pr 都不给过,维护成本高
2.请用矩阵的思维去看 list ,对于 UP 举例这三个是 1*1 1*3 3*1 的区别。元组数据一般是为了保证数据无法修改,你把它看成 const list 就好了。通常情况下你用 list 足够
3. 没有理解你的意思,你只是需要最终输出的精度修改吗?那只要输出后再用个 round(out_ret, 3)不就好了
sonnyclarity492
359 天前
@SeaRecluse 第三个问题,目前做的工作时在输出的图片上显示原始数据,该库调用了 matplotlib 来绘图,并且在代码里写死了取 2 位小数
SeaRecluse
359 天前
@sonnyclarity492 对于这种别人写好的接口,你想去修改里面的一些参数完全是可以的。看你描述应该这接口里参数显示写了.2f 之类的正则化规则,可以按自己需求改动的~
sonnyclarity492
359 天前
@SeaRecluse 嗯嗯 感谢回复,但是考虑到要在其他计算机上可复现,在想办法修复这个问题
SeaRecluse
359 天前
@sonnyclarity492 此外,善用 gpt 。如果你不了解一些代码的具体实现,但又想改动的话,可以给 gpt 提问并附上你的详细要求。
SeaRecluse
359 天前
@sonnyclarity492 如果是考虑别人的环境也能部署的话,可以把接口的实现抽出来放本地写一份,这样就可以规避了~
kuituosi
359 天前
不需要,python 的目的就是让非科班的也能使用
sonnyclarity492
359 天前
感谢楼上各位的回复。总结下来就是要学会常用的数据结构,尝试用已经学会的知识来完成任务,待学习新知识后继续完善。
ethenzh
359 天前
你这里的问题 copilot 都能回答。尤其是第三点,你可以问 “我有 xxx 需求(将某个第三方库的输出精度改为 3 ),达到这个目的的最佳实践是?请用例子解释”
iorilu
358 天前
哪有那么简单

我说说把, 如果你真的想用 python 干任何正经活, 自己要写几百行代码以上的, 不是完全基于别人代码改一点的那种

你必须都要懂, 反正今天不学明天也要学, 就这么简单

除非你是零时用下, 糊弄一下交作业
Baoni
358 天前
一般人不都是学到自己觉得够用嘛,你这都觉得不够了就学呗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1005763

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX