※ 本文為 MindOcean 轉寄自 ptt.cc 更新時間: 2022-02-03 01:55:18
看板 Gossiping
作者 標題 [問卦] 初學Python是不是養成一堆壞習慣?
時間 Wed Feb 2 00:54:25 2022
現在流行入門學Python,真的會養成一堆壞習慣耶
昨天看學生寫的code,一堆人在那邊:
for s in list:
If list.index(s) % 2 == 0
看到快吐血
直接用for each loop,每次都給我call 函式找index
還有人寫:
b = [1,2,3]
c = [4,5,6]
…
…
c = b[0]
直接把裝list的變數拿來裝int
可以理解python用於資料科學、機器學習的優勢
但初學者就學Python是不是會養成一堆壞習慣啊?
可以從C開始學嗎….
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 71.230.161.115 (美國)
※ 文章代碼(AID): #1X-MN3Nh (Gossiping)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1643734467.A.5EB.html
噓 : 滾 你沒學生1F 114.25.122.50 台灣 02/02 00:55
→ : 你說的問題好像都不算什麼問題2F 1.175.100.137 台灣 02/02 00:56
Index()call一次就O(n)在for loop裡面每個項目都call index(),想操死電腦啊?
→ : 不是碼農的話,能無痛轉matlab不好嗎3F 111.71.72.28 台灣 02/02 00:56
→ : 你現在知道有人講 語言聽得懂就好 是啥了4F 118.171.237.238 台灣 02/02 00:56
推 : C學了最後也是用PYTHON5F 49.217.4.41 台灣 02/02 00:57
推 : 不是ˉ第二個寫這樣有什麼意義啊6F 114.136.144.191 台灣 02/02 00:58
※ 編輯: dixitdeus (71.230.161.115 美國), 02/02/2022 01:00:12→ : 看不懂幹嘛寫c = b[0],意義在哪7F 114.136.144.191 台灣 02/02 00:58
→ : 然後第一個反而不明白有什麼問題?
沒效率,你這樣做python會自己loop過一圈幫你找index→ : 然後第一個反而不明白有什麼問題?
噓 : 現代人還養成吃米不懂種稻的壞習慣勒9F 180.217.148.96 台灣 02/02 01:00
※ 編輯: dixitdeus (71.230.161.115 美國), 02/02/2022 01:01:40→ : 沒差吧 能動就好10F 124.155.130.114 台灣 02/02 01:00
推 : 84 初學者學java還不是會寫成這樣11F 219.71.180.49 台灣 02/02 01:00
→ : 記憶體那麼便宜12F 124.155.130.114 台灣 02/02 01:00
推 : 第一個問題並不是python造成的13F 1.175.100.137 台灣 02/02 01:01
→ : 等數據多起來 就知道痛了14F 124.155.130.114 台灣 02/02 01:02
→ : 第二個不算是問題15F 1.175.100.137 台灣 02/02 01:02
推 : 第一個問題是寫的人太智障 不要怪語言好16F 123.192.16.55 台灣 02/02 01:03
→ : 嗎==
→ : 嗎==
→ : Try, except, 嘻嘻18F 42.76.250.219 台灣 02/02 01:03
推 : 阿就給太多方便當隨便,用C系列沒這19F 219.70.36.142 台灣 02/02 01:04
→ : 種問題
→ : 種問題
推 : 第一個是被python函數寵壞的21F 114.37.162.11 台灣 02/02 01:05
→ : 第二個是沒被資料型態搞死過
→ : 第二個是沒被資料型態搞死過
推 : %2會不會被優化成&1呀23F 114.37.1.149 台灣 02/02 01:07
他們還沒教到bit operation推 : c = b[0] 到底有什麼用意我真的看不懂24F 114.136.144.191 台灣 02/02 01:07
噓 : 給你肩膀你不踩 無聊25F 1.164.92.171 台灣 02/02 01:08
推 : 我覺得怪語言慣壞人這實在有點奇怪26F 1.175.100.137 台灣 02/02 01:08
→ : 所以前面的c=[4,5,6]就等於沒寫過27F 114.136.144.191 台灣 02/02 01:08
推 : 第一題原本是要幹嘛28F 219.71.180.49 台灣 02/02 01:08
→ : 又不是寫什麼幾千萬的案子,能動就好29F 114.40.227.21 台灣 02/02 01:08
推 : 不知道耶,這個問題我有點不知道正30F 114.136.219.37 台灣 02/02 01:08
→ : 確答案,反正你教的本來就是炮灰碼
→ : 農,不會是什麼高等工程師
→ : 確答案,反正你教的本來就是炮灰碼
→ : 農,不會是什麼高等工程師
推 : 這些問題只要跟專題或是進業界沒幾個禮33F 111.82.66.184 台灣 02/02 01:09
→ : 管太多,後面真的出事也不用你擦屁股34F 36.227.86.153 台灣 02/02 01:09
→ : 拜都會自己不見啊35F 111.82.66.184 台灣 02/02 01:09
→ : 因為不會壞XD36F 101.12.53.167 台灣 02/02 01:09
→ : 台灣人水準就那樣,乾脆視為提升運37F 114.136.219.37 台灣 02/02 01:09
→ : 算需求的貢獻
※ 編輯: dixitdeus (172.58.205.46 美國), 02/02/2022 01:11:46→ : 算需求的貢獻
推 : for i, s in enumerate(list) 要這個?39F 219.71.180.49 台灣 02/02 01:11
yes,或是 for i in range(len(list))※ 編輯: dixitdeus (172.58.205.46 美國), 02/02/2022 01:13:28
推 : 找index用enumerate==40F 223.140.211.196 台灣 02/02 01:13
推 : 搞不好要看index去處理值阿==41F 219.71.180.49 台灣 02/02 01:15
→ : 不過最後會用list[::2]
→ : 不過最後會用list[::2]
推 : 不知道enumerate時真的會這樣寫 有夠醜=43F 223.140.211.196 台灣 02/02 01:17
→ : =
其實也不需要enumerate→ : =
for 的本質就是檢查條件,只要符合條件就執行
※ 編輯: dixitdeus (172.58.205.184 美國), 02/02/2022 01:19:58
推 : 哪來的學店呀 不是Python的問題好嗎45F 49.217.201.101 台灣 02/02 01:21
推 : 懂你要說什麼了46F 219.71.180.49 台灣 02/02 01:24
→ : python loop list太方便 結果忘了基本
→ : 其他語言用 int=0 i++的方式去for
→ : python loop list太方便 結果忘了基本
→ : 其他語言用 int=0 i++的方式去for
推 : 講真的除非特別要求,不然我寫作業也都49F 114.37.196.131 台灣 02/02 01:26
→ : 用第一直覺下去幹,畢竟作業要處理的運
→ : 用第一直覺下去幹,畢竟作業要處理的運
推 : 我們js才不管這些51F 1.164.209.89 台灣 02/02 01:28
→ : 算量即使真的複雜度很高,也根本感覺不52F 114.37.196.131 台灣 02/02 01:29
→ : 出來
→ : 所以很容易出現超醜的code
→ : 出來
→ : 所以很容易出現超醜的code
推 : 455F 223.141.166.69 台灣 02/02 01:29
→ : 第二個根本不是 python 的問題...56F 123.192.17.16 台灣 02/02 01:30
→ : 題目寫要分析才會乖乖寫57F 114.37.196.131 台灣 02/02 01:31
→ : 變數命名衝突比較接近 clean code 概念58F 123.192.17.16 台灣 02/02 01:31
→ : 你的第一個例子是不是 s 和 x 同一個值?
我寫錯了,是一樣的→ : 你的第一個例子是不是 s 和 x 同一個值?
噓 : 就一個自以為的廢物60F 118.160.251.183 台灣 02/02 01:35
※ 編輯: dixitdeus (172.58.207.249 美國), 02/02/2022 01:37:29推 : python就只是方便而已 教出了一堆ㄌ61F 223.139.173.73 台灣 02/02 01:43
→ : ㄐ
→ : ㄐ
推 : 叫他們乖乖寫java or C++63F 168.5.165.222 美國 02/02 01:44
→ : 不過第一題是他不熟python吧 好歹ca64F 223.139.173.73 台灣 02/02 01:44
→ : ll個Len去跑或enumerate
→ : ll個Len去跑或enumerate
→ : 第一個寫法是有問題的,沒考慮值有重複時66F 123.192.17.16 台灣 02/02 01:47
→ : 總會返回第一個
→ : 值沒重複或是物件當我沒說
→ : 總會返回第一個
→ : 值沒重複或是物件當我沒說
推 : 這跟Python有啥關係嗎?69F 98.45.135.233 美國 02/02 01:50
推 : 第二個從Python角度只是c再開一個新記70F 114.136.144.78 台灣 02/02 01:54
→ : 憶體空間 資料型態從list變b[0]
→ : 憶體空間 資料型態從list變b[0]
推 : 直接寫在程式碼裡面,電腦會死當XDD72F 203.217.118.75 台灣 02/02 02:00
→ : 能用二進位就用二進位,能少一個迴圈就少
→ : 一個,呼叫陣列儘量用同一個區域
→ : 能用二進位就用二進位,能少一個迴圈就少
→ : 一個,呼叫陣列儘量用同一個區域
推 : 第一個.... 這感覺比較像語法不熟,不然75F 98.45.135.233 美國 02/02 02:02
→ : 如果只是想跑得動,就算了XDD76F 203.217.118.75 台灣 02/02 02:02
→ : 其實他的做法滿迂迴的77F 98.45.135.233 美國 02/02 02:02
→ : 我覺得javascript 也差不多78F 111.71.39.6 台灣 02/02 02:02
→ : 學都有開設程式語言介紹基本概念 其實學79F 123.192.17.16 台灣 02/02 02:07
→ : 大學
→ : 哪種都大同小異 現代語言嘛都是你抄我 我
→ : 抄你
→ : 大學
→ : 哪種都大同小異 現代語言嘛都是你抄我 我
→ : 抄你
推 : 真要處理大數據就不是能動就好83F 1.160.168.59 台灣 02/02 02:14
→ : 正確性 > 可讀性 > 效能 一般是這樣...84F 123.192.17.16 台灣 02/02 02:19
噓 : 你落伍了 c已經已經跟智障手機一樣85F 49.217.68.163 台灣 02/02 02:23
推 : 初學學什麼都一樣 高端自己會想辦法 正86F 223.137.21.0 台灣 02/02 02:23
→ : 常人應付完就沒了
→ : 常人應付完就沒了
→ : 有問題不是python88F 114.45.186.2 台灣 02/02 02:28
→ : 線上課程不正規真的很多偷吃步89F 123.193.195.89 台灣 02/02 02:31
→ : 以電腦的角度來看 第二個沒問題啊90F 70.230.116.165 美國 02/02 02:36
→ : 第一個比較像是沒有演算法的概念
→ : 這是主要的問題,只會呼叫函數,卻無法想像
→ : 背後是怎麼運作的
→ : 第一個比較像是沒有演算法的概念
→ : 這是主要的問題,只會呼叫函數,卻無法想像
→ : 背後是怎麼運作的
→ : 看什麼課的作吧 資結可以 演算法不行94F 118.168.55.48 台灣 02/02 02:56
→ : 第一個看不出問題的請回去念演算法95F 172.92.178.210 美國 02/02 03:02
→ : 有時候重複使用變數名稱 只是想降低接手96F 118.170.217.64 台灣 02/02 03:02
→ : 人員的可讀性而已 xD
→ : 人員的可讀性而已 xD
推 : 我看不懂你舉的例子他想要幹嘛….98F 111.83.157.143 台灣 02/02 03:05
→ : 還在用a b c當變數名稱的程式,重複使用變99F 70.230.116.165 美國 02/02 03:05
→ : 數名稱有差嗎
→ : 數名稱有差嗎
→ : 還好我都用xyz101F 118.170.217.64 台灣 02/02 03:09
推 : 教他們js先102F 101.9.201.93 台灣 02/02 03:12
→ : 明顯就是這個案太廢 還沒看過爛成這樣的103F 180.217.133.92 台灣 02/02 03:14
推 : 第一段不知道在幹嘛= = 重複兩遍104F 223.26.109.234 台灣 02/02 03:20
噓 : 這是寫的人沒學好吧,連語言特性都不了105F 114.37.187.179 台灣 02/02 03:24
→ : 解,學什麼都一樣
→ : 解,學什麼都一樣
推 : 大葉大學的吧107F 61.228.78.205 台灣 02/02 03:25
→ : 先求有功能阿,不然咧,效率本來就後面再108F 1.200.77.99 台灣 02/02 03:31
→ : 補
→ : 補
噓 : Python就是給文組自以為很屌的玩具110F 174.61.172.239 美國 02/02 03:33
推 : 那些換個語言還是沒解決啊111F 1.200.189.187 台灣 02/02 05:11
→ : 回頭看還蠻有趣的 還call index112F 111.246.80.90 台灣 02/02 05:24
推 : 不是啊你以為他們真的懂原理喔 會出現一堆113F 101.12.25.104 台灣 02/02 05:28
→ : 奇奇怪怪寫法 不就是1.他不懂什麼叫正經解
→ : 法 2.東抄西抄勉強拼湊出能動的東西
→ : 這跟用那種語言沒關係 只是因為python這樣
→ : 就能動而已 反正敷衍過拿得到學分就好
→ : 這才是真理啊 不管是不是程設都是一樣的
→ : 奇奇怪怪寫法 不就是1.他不懂什麼叫正經解
→ : 法 2.東抄西抄勉強拼湊出能動的東西
→ : 這跟用那種語言沒關係 只是因為python這樣
→ : 就能動而已 反正敷衍過拿得到學分就好
→ : 這才是真理啊 不管是不是程設都是一樣的
推 : js才醜119F 123.110.17.106 台灣 02/02 06:15
推 : 關於第一條即便是直接學python都是非常差勁120F 167.96.138.71 美國 02/02 06:41
→ : 的style啊。enumerate就是拿來解決這個問題
→ : 的啊…
推 : 再來我覺得不需要太C/C++本位主義。如果
→ : 機器學習用C/C++比較方便的話Google幹嘛寫
→ : python interface?
→ : python很多就拿來寫小script,又不是幾十萬
→ : 行的專案必須借助strictly typed language
→ : 幫你避免錯誤。
→ : 的style啊。enumerate就是拿來解決這個問題
→ : 的啊…
推 : 再來我覺得不需要太C/C++本位主義。如果
→ : 機器學習用C/C++比較方便的話Google幹嘛寫
→ : python interface?
→ : python很多就拿來寫小script,又不是幾十萬
→ : 行的專案必須借助strictly typed language
→ : 幫你避免錯誤。
噓 : 這跟 Python 沒有關係吧 是人的問題129F 114.37.185.147 台灣 02/02 07:03
→ : 覺得 Python 是給文組的要不要講一下自
→ : 己在哪裡高就?
→ : 覺得 Python 是給文組的要不要講一下自
→ : 己在哪裡高就?
推 : 誰叫python要讓人這樣寫132F 27.51.17.118 台灣 02/02 08:55
→ : 學生:我們那個老師很不會教....133F 180.217.129.186 台灣 02/02 09:14
推 : 要好習慣不如先學JAVA或C#134F 223.137.159.177 台灣 02/02 10:07
推 : c = b[0] , c是auto 的話不是也沒差?135F 42.73.107.94 台灣 02/02 10:16
推 : 說記憶體便宜的是沒寫過程式喔,是影響程136F 118.161.164.240 台灣 02/02 10:23
→ : 式運行速度跟記憶體大小沒關係
推 : 高階語言所用的物件本來程式速度就慢了,
→ : 沒用好速度更慢
→ : 式運行速度跟記憶體大小沒關係
推 : 高階語言所用的物件本來程式速度就慢了,
→ : 沒用好速度更慢
推 : 昨天大年初一 你為什麼大年初一改作業140F 101.9.138.117 台灣 02/02 10:30
噓 : C就垃圾語言 未來沒人用 老頭子才這麼在141F 123.240.243.33 台灣 02/02 10:38
→ : 乎
→ : 乎
推 : 怎麼會有人覺得C以後沒人用XD143F 114.39.67.228 台灣 02/02 10:39
推 : 未來一萬年可能沒人用144F 220.137.243.66 台灣 02/02 10:44
→ : 100年內,C不可能消失的
→ : 100年內,C不可能消失的
噓 : 說C沒人用的太無知了146F 114.45.191.22 台灣 02/02 10:52
噓 : 你說的問題都不是問題 改習慣就好147F 58.114.134.20 台灣 02/02 11:00
→ : 說 C 沒用的人要不要先跟 Linus Torvald
→ : s 辯論一下
→ : 說 C 沒用的人要不要先跟 Linus Torvald
→ : s 辯論一下
推 : 說C以後沒人用真的有夠無知與150F 223.139.176.219 台灣 02/02 11:25
推 : 第一個就用range 然後[i%2]可以解決的151F 49.217.142.200 台灣 02/02 11:32
→ : 事情
→ : 說錯,是[2i]
→ : 說c沒用的可能不知道python主流的lib都
→ : 是用c寫的
→ : 事情
→ : 說錯,是[2i]
→ : 說c沒用的可能不知道python主流的lib都
→ : 是用c寫的
噓 : 用python 寫enumerate好嗎,誰在跟你i156F 223.136.82.103 台灣 02/02 11:57
→ : =1;I++
→ : =1;I++
推 : 如果是資工系 可能還是要從C開始158F 219.68.89.51 台灣 02/02 12:54
推 : 會養成壞習慣是確實159F 123.195.4.105 台灣 02/02 13:34
推 : simple is the best160F 61.224.7.147 台灣 02/02 14:25
推 : 很多人覺得方便寫就好了,沒去思考161F 223.141.137.134 台灣 02/02 18:24
→ : 底層實際會怎麼處理,一部分的問題
→ : 是現在電腦都太強了,多幾個垃圾步
→ : 驟也是沒感覺
→ : 底層實際會怎麼處理,一部分的問題
→ : 是現在電腦都太強了,多幾個垃圾步
→ : 驟也是沒感覺
推 : 工具本來就是先求能完成才求優化,等165F 114.45.144.150 台灣 02/02 19:02
→ : 遇到問題自然會去優化
→ : 遇到問題自然會去優化
→ : 先學py的人 最大的問題是不知道變數有型別167F 61.231.43.45 台灣 02/02 21:46
→ : 遇過很多先學py再轉寫其它語言的人搞不懂
→ : int float double差在哪
→ : 遇過很多先學py再轉寫其它語言的人搞不懂
→ : int float double差在哪
--
※ 看板: Gossiping 文章推薦值: 0 目前人氣: 0 累積人氣: 3448
回列表(←)
分享