背景:非计算机科班出身,目前忙于科研论文写作;完整深入的学习了 C 语言; Python 学习了基本的判断、循环、函数,换句话说,只会 C 语言那套;没有学习面向对象的知识。
疑问 1:Python 中有很多语法糖,例如 enumerate() 和 zip() 函数。举这两个例子是因为我不会用,但 copilot 给出了提示,结果也确实好用且正确。有必要针对这种语法糖深入学习吗?
疑问 2 ,是否有必要完整学习 Python 的语法?举个数据分析的例子。
在使用列表时,如何区分 ['A'], ['A', 'B', 'C'] 以及 [['A'], ['B'], ['C']]。
元组又是什么?为什么有时限定元组输入,和列表有何区别?即 (1, 5) 和 [1, 5] 有何区别?
疑问3:研究中涉及到修改某个库中的参数,将输出改为 3 位小数。网络上查找了相关资料,用一个自定义函数继承,然后再修改,然而我看不懂,最终直接修改了库代码。
目前暂时就这三类问题,恳请各位大佬解释。
1
taogen 326 天前 1
已知 OP 为了写论文学习 Python 。我的回答是:
1. 不需要。代码写多了自然会选择最简单的方式。 2. 不需要。看下常用基础,够用就行。Learn Python in Y minutes https://learnxinyminutes.com/docs/python/ 3. 代码能跑就行。 |
2
coderluan 326 天前 1
没必要完全学,一般学下数据类型,逻辑运算,常用函数就行,而楼主你提的问题就是普通的数据类型和常用函数,不涉及什么语法糖或者完全语法,都是入门问题,得学。
|
3
adoal 326 天前 1
顺便说一下,enumerate 和 zip 不是语法糖,也跟你“没有学习面向对象的知识”无关。可以算是函数式编程(跟面向对象编程平等的另一种范式)里比较基础的用法。
|
4
iyaozhen 326 天前 1
1. 可以不学,正常写(多层) for 循环也行
2. 你说的这个和完整语法没啥关系,['A'], ['A', 'B', 'C'] 以及 [['A'], ['B'], ['C']] 就是不一样的东西,一下子也不知道怎么给你解释(因为我 C 忘的差不多了)。基础的语法还是得学一学。元组你可以不了解,只用 list 就行 3. 这个问题信息太少。改源码的事情怎么说呢,如果你是一次性的,就干吧。我们做工程的一般不这样,因为项目会持续迭代。 最后你说的这些和面向对象没啥关系,再说 python 照样可以面向过程的函数式 |
5
Lee2019 326 天前 1
如果后面不打算找 python 开发相关的工作,个人任务三个问题的答案是:
1 ,不需要 2 ,没必要,能把论文的数据跑出来就行。 3 ,继承还直接改源码都可以,其实你都改源码了,直接把继承一样的,殊途同归,能跑通就行,缺点就是你的代码换一个环境就跑不起来了,还得现去改依赖库的源码。 |
6
SeaRecluse 326 天前
1.不需要 语法糖太多的代码我一般 pr 都不给过,维护成本高
2.请用矩阵的思维去看 list ,对于 UP 举例这三个是 1*1 1*3 3*1 的区别。元组数据一般是为了保证数据无法修改,你把它看成 const list 就好了。通常情况下你用 list 足够 3. 没有理解你的意思,你只是需要最终输出的精度修改吗?那只要输出后再用个 round(out_ret, 3)不就好了 |
7
sonnyclarity492 OP @SeaRecluse 第三个问题,目前做的工作时在输出的图片上显示原始数据,该库调用了 matplotlib 来绘图,并且在代码里写死了取 2 位小数
|
8
SeaRecluse 326 天前
@sonnyclarity492 对于这种别人写好的接口,你想去修改里面的一些参数完全是可以的。看你描述应该这接口里参数显示写了.2f 之类的正则化规则,可以按自己需求改动的~
|
9
sonnyclarity492 OP @SeaRecluse 嗯嗯 感谢回复,但是考虑到要在其他计算机上可复现,在想办法修复这个问题
|
10
SeaRecluse 326 天前 1
@sonnyclarity492 此外,善用 gpt 。如果你不了解一些代码的具体实现,但又想改动的话,可以给 gpt 提问并附上你的详细要求。
|
11
SeaRecluse 326 天前 1
@sonnyclarity492 如果是考虑别人的环境也能部署的话,可以把接口的实现抽出来放本地写一份,这样就可以规避了~
|
12
kuituosi 326 天前 1
不需要,python 的目的就是让非科班的也能使用
|
13
sonnyclarity492 OP 感谢楼上各位的回复。总结下来就是要学会常用的数据结构,尝试用已经学会的知识来完成任务,待学习新知识后继续完善。
|
14
ethenzh 326 天前 via Android
你这里的问题 copilot 都能回答。尤其是第三点,你可以问 “我有 xxx 需求(将某个第三方库的输出精度改为 3 ),达到这个目的的最佳实践是?请用例子解释”
|
15
iorilu 325 天前
哪有那么简单
我说说把, 如果你真的想用 python 干任何正经活, 自己要写几百行代码以上的, 不是完全基于别人代码改一点的那种 你必须都要懂, 反正今天不学明天也要学, 就这么简单 除非你是零时用下, 糊弄一下交作业 |
16
Baoni 325 天前
一般人不都是学到自己觉得够用嘛,你这都觉得不够了就学呗
|