有关 Python 的疑问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
sonnyclarity492

有关 Python 的疑问

  •  
  •   sonnyclarity492 Jan 4, 2024 1936 views
    This topic created in 846 days ago, the information mentioned may be changed or developed.

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

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

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

    在使用列表时,如何区分 ['A'], ['A', 'B', 'C'] 以及 [['A'], ['B'], ['']]。 元组又是什么?为什么有时限定元组输入,和列表有何区别?即 (1, 5) 和 [1, 5] 有何区别? 

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

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

    16 replies    2024-01-05 10:24:55 +08:00
    taogen
        1
    taogen  
       Jan 4, 2024   1
    已知 OP 为了写论文学习 Python 。我的回答是:

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

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

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

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

    除非你是零时用下, 糊弄一下交作业
    Baoni
        16
    Baoni  
       Jan 5, 2024
    一般人不都是学到自己觉得够用嘛,你这都觉得不够了就学呗
    About     Help     Advertise     Blog     API     FAQ     Solana     3249 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 71ms UTC 13:21 PVG 21:21 LAX 06:21 JFK 09:21
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86