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

Поделиться
HTML-код
  • Опубликовано: 21 дек 2024

Комментарии • 59

  • @kjc8751
    @kjc8751 8 месяцев назад +15

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

    • @minkoder
      @minkoder  8 месяцев назад +1

      感谢支持~

  • @lufeng369
    @lufeng369 7 месяцев назад +15

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

  • @grumpypop517
    @grumpypop517 8 месяцев назад +30

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

    • @周柏宇-g4e
      @周柏宇-g4e 8 месяцев назад +1

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

    • @Northerndark
      @Northerndark 3 месяца назад

      会更慢,因为例子里要处理的数据太少了🙂

  • @tzengyuxio
    @tzengyuxio 6 месяцев назад +2

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

    • @bingyanliu6370
      @bingyanliu6370 6 месяцев назад +2

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

  • @leedavid5214
    @leedavid5214 7 месяцев назад +7

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

  • @maigowang
    @maigowang 6 месяцев назад

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

  • @波特大哈利-e7w
    @波特大哈利-e7w 7 месяцев назад +1

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

  • @CyberHongTu
    @CyberHongTu 8 месяцев назад +8

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

    • @minkoder
      @minkoder  8 месяцев назад +6

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

  • @fenix20075
    @fenix20075 8 месяцев назад +5

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

  • @JohnSmith-nb6lq
    @JohnSmith-nb6lq 8 месяцев назад +2

    讲的挺好,鼓励

  • @jiweixia7844
    @jiweixia7844 7 месяцев назад +1

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

  • @Mingming_Studio
    @Mingming_Studio 8 месяцев назад +9

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

  • @pizzafaipan
    @pizzafaipan 8 месяцев назад +3

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

  • @sunnynie4290
    @sunnynie4290 7 месяцев назад

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

  • @王大為
    @王大為 8 месяцев назад +3

    講得很仔細 適合入門 推

  • @chrislee8319
    @chrislee8319 8 месяцев назад +5

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

  • @johnrui-ug8nx
    @johnrui-ug8nx 7 месяцев назад

    讲得不错!

  • @chumicat
    @chumicat 8 месяцев назад +1

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

  • @ericapple2408
    @ericapple2408 8 месяцев назад +4

    generator, any, all, filter, map, zip

  • @justinlin7505
    @justinlin7505 8 месяцев назад

    介紹的很詳細

  • @hengzhang9671
    @hengzhang9671 6 месяцев назад

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

  • @duzhuo
    @duzhuo 6 месяцев назад

    😥很像gpt给我生成的代码

  • @archibaldchain1204
    @archibaldchain1204 8 месяцев назад

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

    • @maigowang
      @maigowang 6 месяцев назад

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

  • @crearg8259
    @crearg8259 8 месяцев назад +4

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

    • @whity2508
      @whity2508 8 месяцев назад +6

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

    • @crearg8259
      @crearg8259 8 месяцев назад +1

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

  • @billgameful
    @billgameful 5 дней назад

    語法糖學會當然好,但學不會/不想用也無傷大雅。

  • @憤怒小鳥
    @憤怒小鳥 7 месяцев назад

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

  • @xiang1888
    @xiang1888 8 месяцев назад

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

    • @clmikechan
      @clmikechan 7 месяцев назад +3

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

    • @oliiz7165
      @oliiz7165 7 месяцев назад

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

  • @超級無情大熊貓
    @超級無情大熊貓 7 месяцев назад

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

    • @mingm
      @mingm 7 месяцев назад

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

  • @maboroshi0327
    @maboroshi0327 8 месяцев назад

    zip真的好用

  • @zacks.s
    @zacks.s 6 месяцев назад

    捉个小虫 tuple 念错了

  • @BurgerBurglar8964
    @BurgerBurglar8964 8 месяцев назад +2

    只讲Python吗

  • @user-love666
    @user-love666 8 месяцев назад

    我倾向于使用共性

  • @zeicold
    @zeicold 8 месяцев назад +42

    实践中注意可读性...

    • @b_2u
      @b_2u 8 месяцев назад +1

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

    • @rogerroan7583
      @rogerroan7583 8 месяцев назад +13

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

    • @g83.07
      @g83.07 8 месяцев назад +3

      你沒看過不代表別人不會

    • @zeicold
      @zeicold 6 месяцев назад

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

    • @zeicold
      @zeicold 6 месяцев назад

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

  • @cacasun
    @cacasun 8 месяцев назад +1

    语法糖

  • @mnKoTzRd
    @mnKoTzRd 8 месяцев назад

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

  • @jiachen7865
    @jiachen7865 7 месяцев назад

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

    • @yannnzhou7400
      @yannnzhou7400 6 месяцев назад

      一个是 python 层一个是 C 层

    • @jiachen7865
      @jiachen7865 6 месяцев назад

      @@yannnzhou7400 jit 运行时还是for loop

  • @theo1103
    @theo1103 8 месяцев назад

    讚讚

  • @John_Shi305
    @John_Shi305 7 месяцев назад +1

    写代码,少用语法糖…

  • @jackyeh0708
    @jackyeh0708 7 месяцев назад +1

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

  • @CornuDev
    @CornuDev 8 месяцев назад

  • @土撥鼠-r4g
    @土撥鼠-r4g 8 месяцев назад +4

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