※ 本文為 MindOcean 轉寄自 ptt.cc 更新時間: 2022-02-03 02:03:30
看板 Gossiping
作者 標題 Re: [問卦] 初學Python是不是養成一堆壞習慣?
時間 Wed Feb 2 02:43:13 2022
※ 引述《dixitdeus (dixitdeus)》之銘言:
: 現在流行入門學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開始學嗎….
你在講什麼鬼 這個很顯然就是因為先學C導致寫法不pythonic
以你舉的第一個例子來說 應該會是 res = [i % 2 == 0 for i in range(len(list))]
有np的話第一個例子連for in 都省了
import numpy as np
res = np.asarray(range(len(list))) % 2 == 0
b, c....如果是後面會用到的向量建議用np
b = np.asarray([1,2,3])
c = np.asarray([4,5,6])
因為丟進Learning的function有時候會直的接 有時候是橫接 有時候會打開
這時候可以善用concatenate 舉例:
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
np.concatenate((a, b), axis=0) # array([[1, 2], [3, 4], [5, 6]])
np.concatenate((a, b.T), axis=1) # array([[1, 2, 5], [3, 4, 6]])
np.concatenate((a, b), axis=None) # array([1, 2, 3, 4, 5, 6])
--
看板 KoreanPop
作者 標題 [問題] 請問一個叫O.S.T的歌手
時間 Fri Feb 19 12:25:09 2016
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.141.208.43 (臺灣)
※ 文章代碼(AID): #1X-Nz4lL (Gossiping)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1643740996.A.BD5.html
推 : 唉,都沒人推。1F 118.169.100.48 台灣 02/02 02:46
都在睡覺了XD推 : 宅2F 85.83.228.116 丹麥 02/02 02:48
XD→ : res = [list % 2 == 0] <<<看不懂這在寫啥3F 70.230.116.165 美國 02/02 02:49
我忘了這是np的語法糖→ : 有C的背景不是應該寫for i in range(len(l4F 164.67.212.93 美國 02/02 02:49
→ : 不是沒人推 大家還在尻 等等才會上來5F 180.217.232.238 台灣 02/02 02:49
→ : 把變數名稱取做list本身就大有問題6F 70.230.116.165 美國 02/02 02:50
→ : ist))嗎 for auto i : list我記得是C++197F 164.67.212.93 美國 02/02 02:50
→ : 東西 沒道理現在的學生學C++直接從C++19
Range-based for loop (since C++11) 還是蠻新 大部分上課還是C++98→ : 東西 沒道理現在的學生學C++直接從C++19
→ : 下手9F 164.67.212.93 美國 02/02 02:51
→ : 你再去查一下list comprehension的語法10F 70.230.116.165 美國 02/02 02:51
太久沒寫忘了 感謝提醒→ : list % 2會有type error11F 164.67.212.93 美國 02/02 02:53
剛剛寫錯 改了推 : 推推12F 223.136.240.161 台灣 02/02 02:59
推 : 是在找index為偶數吧?13F 114.24.247.116 台灣 02/02 03:00
剛剛沒認真看 感謝※ 編輯: Ommm5566 (223.141.208.43 臺灣), 02/02/2022 03:12:53
推 : 這個可以幹嘛14F 125.224.208.13 台灣 02/02 03:12
python就是行數很少 很多C/C++要寫很多行的東西 np語法糖很快就寫好非常適合用py來驗poc 過了之後再重新刻成c/cpp
※ 編輯: Ommm5566 (223.141.208.43 臺灣), 02/02/2022 03:16:07
→ : Comprehension好像不單純是語法糖15F 172.92.178.210 美國 02/02 03:22
→ : 以前寫leetcode發現速度真的有差
長知識了→ : 以前寫leetcode發現速度真的有差
※ 編輯: Ommm5566 (223.141.208.43 臺灣), 02/02/2022 03:29:40
推 : Python為啥沒指標17F 1.171.66.212 台灣 02/02 03:31
就是py拉到抽象層次思考 先專注在演算法到c才需要注意pointer這種memory位置的底層問題
※ 編輯: Ommm5566 (223.141.208.43 臺灣), 02/02/2022 03:34:20
→ : 我沒有往下深究 那只是觀察到的18F 172.92.178.210 美國 02/02 03:35
推 : 以演算法的角度,List Comprehension19F 98.45.135.233 美國 02/02 03:35
→ : 和 List.append() 一樣快就是了
寫法上能省盡量省XD→ : 和 List.append() 一樣快就是了
※ 編輯: Ommm5566 (223.141.208.43 臺灣), 02/02/2022 03:36:54
推 : 至於指標...不如說,現在常用的程式語言21F 98.45.135.233 美國 02/02 03:38
→ : 有 指標 的很少了
go算常用嗎? go算是指標的概念→ : 有 指標 的很少了
應該是說手稿語言已經很少管memory 比如js, raku, ruby, kotlin, racket....
先用手稿語言專注在演算法 把複雜度先做好
最後真的要榨乾要效能的話再回到處理效能的語言去調校
※ 編輯: Ommm5566 (223.141.208.43 臺灣), 02/02/2022 03:44:11
推 : 這世紀發明的語言可能只有go有指標23F 220.137.243.66 台灣 02/02 03:44
XD推 : 我也覺得除非你是要處理效能瓶頸的人,24F 98.45.135.233 美國 02/02 03:44
※ 編輯: Ommm5566 (223.141.208.43 臺灣), 02/02/2022 03:45:20→ : 不然先從開發時間短的語言開始比較務實25F 98.45.135.233 美國 02/02 03:45
真的 手稿語言讚※ 編輯: Ommm5566 (223.141.208.43 臺灣), 02/02/2022 03:46:00
推 : 嗚嗚 沒人教好麻煩…26F 1.200.126.218 台灣 02/02 03:53
推 : 學C是為了學基礎27F 122.116.39.42 台灣 02/02 04:00
推 : 寫python基本上就已經放棄追求效能ㄌ28F 111.83.157.143 台灣 02/02 04:09
推 : push29F 92.30.118.8 英國 02/02 04:28
推 : 學C有很多好處 指標跟記憶體會比較30F 223.26.109.234 台灣 02/02 04:31
→ : 清楚, 其他語言拿掉 結果還是在操
→ : 作 pointer 使用 stack, heap
→ : 只是讓寫程式的人表面上看不到而已
→ : 清楚, 其他語言拿掉 結果還是在操
→ : 作 pointer 使用 stack, heap
→ : 只是讓寫程式的人表面上看不到而已
推 : 如果最後都要轉成C 不如一開始就用C寫34F 220.132.129.68 台灣 02/02 05:03
→ : 謝惹35F 39.8.65.188 台灣 02/02 05:33
推 : 都會用range了為何不 range (0,len(list36F 110.26.131.229 台灣 02/02 08:12
→ : ),2) 再list就好 ??????
→ : ),2) 再list就好 ??????
推 : 看不懂 哈哈哈38F 111.83.41.50 台灣 02/02 08:54
推 : 幹高手39F 71.230.161.115 美國 02/02 08:55
→ : @.@40F 218.166.230.60 台灣 02/02 09:50
推 : 用py寫 再用cpython去轉就好了41F 39.10.10.218 台灣 02/02 09:53
→ : 不是寫mcu根本沒差那個記憶體效率
→ : 不是寫mcu根本沒差那個記憶體效率
推 : 有學有推,我都寫第一種43F 27.53.120.6 台灣 02/02 10:07
→ : 推44F 49.217.193.102 台灣 02/02 10:25
推 : 白痴……一般人在製造業只要會vba和45F 111.82.1.170 台灣 02/02 11:37
→ : 樞紐能快速處理報表即可……搞這些
→ : 公司有自動化部門幫你搞定~雖然bug
→ : 一堆不如買外面套裝軟體
→ : 樞紐能快速處理報表即可……搞這些
→ : 公司有自動化部門幫你搞定~雖然bug
→ : 一堆不如買外面套裝軟體
推 : Python 讚讚讚49F 49.216.90.109 台灣 02/02 11:54
噓 : 易讀性50F 1.200.121.43 台灣 02/02 12:37
推 : 合理51F 180.217.48.175 台灣 02/02 17:04
--
※ 看板: Gossiping 文章推薦值: 0 目前人氣: 0 累積人氣: 119
作者 Ommm5566 的最新發文:
- 18F 5推 3噓
- 10F 7推
- 9F 3推 1噓
- 12F 7推
- 你在講什麼鬼 這個很顯然就是因為先學C導致寫法不pythonic 以你舉的第一個例子來說 應該會是 res = [i % 2 == 0 for i in range(len(list))] 有np的話 …51F 24推 1噓
點此顯示更多發文記錄
回列表(←)
分享