【python】原来我可以少写这么多for loop!学会之后代码都pythonic了起来

Sdílet
Vložit
  • čas přidán 21. 08. 2024
  • 这期视频讲一些比较常用的python中替代for loop的方式,非常适合刚入门python的小伙伴。学完之后,代码变得整洁了呢!
  • Věda a technologie

Komentáře • 57

  • @lufeng369
    @lufeng369 Před 3 měsíci +13

    就是函数式编程里的高阶函数用法,列表理解其实也是map,reduce,filter这些高阶函数的语法糖而已

  • @kjc8751
    @kjc8751 Před 4 měsíci +14

    很清楚的解釋跟範例, 謝謝分享。

  • @grumpypop517
    @grumpypop517 Před 4 měsíci +29

    numpy vectorized後應該能更快才對,不過這個可能是另一種optimization方法了

    • @user-et3cy4ys5i
      @user-et3cy4ys5i Před 4 měsíci +1

      要注意資料形態要相同,我很常混用到int還有float

  • @leedavid5214
    @leedavid5214 Před 3 měsíci +6

    都是高级用法,从c过来的人相当于要再学一下数据结构和内置函数

  • @maigowang
    @maigowang Před 2 měsíci

    当filter的第一个参数只是一个很简单的表达式的时候,写成list comprehension或者generator会更简洁,因为不需要把这个表达式专门定义成一个函数。

  • @fenix20075
    @fenix20075 Před 4 měsíci +5

    表示拿著整大段for loop去問bito或者任何GPT,叫它用array function簡化程式,都會得出map, filter等使用方法

  • @CyberHongTu
    @CyberHongTu Před 4 měsíci +8

    高天,你试试3.12版本的列表推导式,有更多优化可能更快。

    • @minkoder
      @minkoder  Před 4 měsíci +5

      3.12把一些常用的comprehension inline了,也就是不单独做一个code object然后call了,省了一个frame。

  • @Mingming_Studio
    @Mingming_Studio Před 4 měsíci +9

    學到了學到了,邏輯很清晰
    之前都知道這些函式,卻不是很清楚什麼時候用,這樣舉例就非常明顯了

  • @tzengyuxio
    @tzengyuxio Před 2 měsíci +1

    3:20 左右,使用 generator 的速度比起 for-loop 快了一個數量級 (0.0027s vs 0.0367s), 但會不會其實是把一些實際要做事情的消耗往後丟到要使用 generator 的場景下?

    • @bingyanliu6370
      @bingyanliu6370 Před 2 měsíci +2

      你在一般场合下是对的. 因为generator是lazy compute,yield时候是需要才计算,所以这里剩下来的工作其实没有真的省. 但是注意到这段代码的yield几乎没有任何计算,因为是 (i for i in lst) 所以这里主要的开销还是list append的开销, 这部分是完全省下来的. 所以 时间差一个数量级完全差在了list comprehension这里.

  • @JohnSmith-nb6lq
    @JohnSmith-nb6lq Před 4 měsíci +2

    讲的挺好,鼓励

  • @pizzafaipan
    @pizzafaipan Před 4 měsíci +3

    lst =[list = range(1, 100)]

  • @user-yl7vu1ee3u
    @user-yl7vu1ee3u Před 3 měsíci +1

    any,all,map,filter我可以理解为类似JavaScript的 some,every,map,filter吗?

  • @chrislee8319
    @chrislee8319 Před 4 měsíci +5

    未看影片之前以為你是說用vectorization代替loop
    完全猜錯了😂
    不過溫故知新
    謝謝你的影片
    訂閱了

  • @jiweixia7844
    @jiweixia7844 Před 3 měsíci +1

    这几个和javascript里的filter some every map差不多

  • @sunnynie4290
    @sunnynie4290 Před 3 měsíci

    list comprehension can be a big hole for python beginner causing performance degradation

  • @chumicat
    @chumicat Před 4 měsíci +1

    我以為講道這類功能,itertols不該錯過的XD

  • @johnrui-ug8nx
    @johnrui-ug8nx Před 3 měsíci

    讲得不错!

  • @hengzhang9671
    @hengzhang9671 Před 2 měsíci

    写了很多年的python都还是不行啊。看您的视频如醍醐灌顶

  • @justinlin7505
    @justinlin7505 Před 4 měsíci

    介紹的很詳細

  • @user-hk4pz2of6k
    @user-hk4pz2of6k Před 4 měsíci +3

    講得很仔細 適合入門 推

  • @ericapple2408
    @ericapple2408 Před 4 měsíci +4

    generator, any, all, filter, map, zip

  • @zeicold
    @zeicold Před 4 měsíci +41

    实践中注意可读性...

    • @b_2u
      @b_2u Před 4 měsíci +1

      有些formatter 會幫他換行 如果不做太多操作的話是還行

    • @rogerroan7583
      @rogerroan7583 Před 4 měsíci +12

      這種寫法沒什麼問題看不懂是自己的問題

    • @g83.07
      @g83.07 Před 3 měsíci +3

      你沒看過不代表別人不會

    • @zeicold
      @zeicold Před 2 měsíci

      @@rogerroan7583 初学者都有迷之自信, 实际工作中一秒懂和两秒懂给人的挫折感比你想象的大得多

    • @zeicold
      @zeicold Před 2 měsíci

      @@g83.07 初学者都有迷之自信, 实际工作中一秒懂和两秒懂给人的挫折感比你想象的大得多 另外你的阅读理解能力 也许需要练习很多年才能达到普通人的水平

  • @crearg8259
    @crearg8259 Před 4 měsíci +4

    list效率还是太低了,不如先分配好然后index填数,还更方便并行

    • @whity2508
      @whity2508 Před 4 měsíci +6

      不如用C++ 用Python還考慮效率…

    • @crearg8259
      @crearg8259 Před 4 měsíci +1

      @@whity2508 “只有肉人,没有肉车”

  • @xiang1888
    @xiang1888 Před 4 měsíci

    我只會第一個 for,不過缺點也很明顯,只適用單行,多行的情況就無法簡潔化

    • @clmikechan
      @clmikechan Před 3 měsíci +3

      可以把要做的事寫成一個 function

    • @oliiz7165
      @oliiz7165 Před 3 měsíci

      邏輯先搞明白在求簡化程式碼

  • @超級無情大熊貓
    @超級無情大熊貓 Před 3 měsíci

    不虧是python 高階語言總是有讓人想不到的高階寫法 就我一個C++母語的人跑去寫python還真的就會用with for的寫法=w=

    • @mingm
      @mingm Před 3 měsíci

      花那么多时间研究怎么在python里面做optimization,我觉得还不如直接用c++写来的快

  • @user-fu3cl2go8s
    @user-fu3cl2go8s Před 3 měsíci

    太複雜了 我還是寫c的recursive function吧

  • @maboroshi0327
    @maboroshi0327 Před 4 měsíci

    zip真的好用

  • @duzhuo
    @duzhuo Před 2 měsíci

    😥很像gpt给我生成的代码

  • @cacasun
    @cacasun Před 4 měsíci +1

    语法糖

  • @user-love666
    @user-love666 Před 4 měsíci

    我倾向于使用共性

  • @x9BcoX84
    @x9BcoX84 Před 4 měsíci

    应该成功开通收益功能了,恭喜

  • @zacks.s
    @zacks.s Před 2 měsíci

    捉个小虫 tuple 念错了

  • @theo1103
    @theo1103 Před 4 měsíci

    讚讚

  • @BurgerBurglar8964
    @BurgerBurglar8964 Před 4 měsíci +2

    只讲Python吗

  • @jiachen7865
    @jiachen7865 Před 3 měsíci

    其实本体还是for,只是一个是你自己写的,另一个是别人写好的。

    • @yannnzhou7400
      @yannnzhou7400 Před 2 měsíci

      一个是 python 层一个是 C 层

    • @jiachen7865
      @jiachen7865 Před 2 měsíci

      @@yannnzhou7400 jit 运行时还是for loop

  • @archibaldchain1204
    @archibaldchain1204 Před 4 měsíci

    直接any(last > 50)这样可以吗?

    • @maigowang
      @maigowang Před 2 měsíci

      不行,last(你是想说list吧?)不能直接跟一个数比较

  • @John_Shi305
    @John_Shi305 Před 3 měsíci +1

    写代码,少用语法糖…

  • @jackyeh0708
    @jackyeh0708 Před 3 měsíci +1

    少寫的問題是很難懂, 很難維護

  • @CornuDev
    @CornuDev Před 4 měsíci

  • @user-xg2kc5mk1x
    @user-xg2kc5mk1x Před 4 měsíci +4

    想快還用py😂
    可讀性差在公司別人接手會想打你