[問題] 讓某些物件一起依序做某些事的語法

看板Python作者 (橘白Cat)時間8年前發表 (2017/06/17 07:38), 8年前編輯推噓5(507)
留言12則, 5人參與, 最新討論串1/1
不好意思 python新手發問 以下是手機排版 請見諒 問題是這樣的 假設某些物件變數都有某個a方法 要怎麼讓他們依序地套用a方法 而不是一行一行的慢慢套用 例如 物件變數v1,v2,f,h都有a方法 不想撰寫像以下那樣的程式碼 v1.a() v2.a() f.a() h.a() 而是用一行或某個迴圈讓他們依序地套用 起初的想法是 把這些變數名稱弄進一個list 用for逐一迭代 用eval來運算 類似以下 for i in list: eval(i+".a()") 可是覺得這太麻煩 做不同的運算就又要改一次迴圈 假設今天做的運算是讓這些變數 依序地一起進入某個函數 又要改成 for i in list: eval("f("+i+")") 所以 想問一下前輩們 有沒有一種語法 能把變數視為一個整體 然後做某些運算的語法呢? 例如(以下是杜撰的語法): <v1,v2,f,h>.a() 就這樣一行使得每個變數都套用a方法 len(<v1,v2,f,h>) 就這樣一行使得每個變數都依序當作函數的引數進入函數運算 <v1,v2,f,h> * 5 就這樣一行使得每個變數都乘以5 也就是說在<和>之間 是一個變數串列 視為一整體做某些運算 有這樣的語法嗎? ----- Sent from JPTT on my Asus ASUS_Z00UD. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.246.67.225 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1497685100.A.900.html

06/17 15:57, , 1F
把所有變數直接丟進list就可以了(?)
06/17 15:57, 1F
真的假的? ※ 編輯: LessonWang (27.246.67.225), 06/17/2017 16:44:53

06/17 16:46, , 2F
在我杜撰的語法中 <>就類似數學的括號 然後類似分配律
06/17 16:46, 2F

06/17 16:46, , 3F
的概念 逐一依序地運算
06/17 16:46, 3F

06/17 17:15, , 4F
試試看map指令 http://tinyurl.com/y8rd5otl
06/17 17:15, 4F
這個不錯用

06/17 17:35, , 5F
[x.a for x in [v1,v2,f,h]]
06/17 17:35, 5F

06/17 17:37, , 6F
試試 list comprehension
06/17 17:37, 6F

06/17 21:39, , 7F

06/17 21:39, , 8F
就這樣..還是你不是這個意思@@
06/17 21:39, 8F

06/17 21:45, , 9F

06/17 21:45, , 10F
你也可以把一堆function的名字丟進一個list
06/17 21:45, 10F

06/17 21:45, , 11F
然後讓他們跑迴圈分別執行你要的function
06/17 21:45, 11F
D大的這個也是可以 感謝

06/17 21:57, , 12F
getattr
06/17 21:57, 12F
已試過 也可以 感謝 ※ 編輯: LessonWang (27.246.67.225), 06/17/2017 22:16:09 ※ 編輯: LessonWang (27.246.67.225), 06/17/2017 22:25:22 ※ 編輯: LessonWang (27.246.67.225), 06/17/2017 22:33:32
文章代碼(AID): #1PHDnia0 (Python)