看板 Gossiping
作者 dixitdeus (dixitdeus)
標題 [問卦] 初學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
※ 同主題文章:
[問卦] 初學Python是不是養成一堆壞習慣?
02-02 00:54 dixitdeus.
sealdoom: 滾 你沒學生1F 114.25.122.50 台灣 02/02 00:55
DarkIllusion: 你說的問題好像都不算什麼問題2F 1.175.100.137 台灣 02/02 00:56
Index()call一次就O(n)
在for loop裡面每個項目都call index(),想操死電腦啊?
qazws08: 不是碼農的話,能無痛轉matlab不好嗎3F 111.71.72.28 台灣 02/02 00:56
infoman: 你現在知道有人講 語言聽得懂就好 是啥了4F 118.171.237.238 台灣 02/02 00:56
cisyong: C學了最後也是用PYTHON5F 49.217.4.41 台灣 02/02 00:57
Ahhhhaaaa: 不是ˉ第二個寫這樣有什麼意義啊6F 114.136.144.191 台灣 02/02 00:58
※ 編輯: dixitdeus (71.230.161.115 美國), 02/02/2022 01:00:12
Ahhhhaaaa: 看不懂幹嘛寫c = b[0],意義在哪
然後第一個反而不明白有什麼問題?7F 114.136.144.191 台灣 02/02 00:58
沒效率,你這樣做python會自己loop過一圈幫你找index

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

--
--
(dixitdeus.): [問卦] 初學Python是不是養成一堆壞習慣? - Gossiping板