作者LessonWang (橘白Cat)
看板Python
標題[問題] 讓某些物件一起依序做某些事的語法
時間Sat Jun 17 15:38:18 2017
不好意思 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
推 Django: 把所有變數直接丟進list就可以了(?) 06/17 15:57
真的假的?
※ 編輯: LessonWang (27.246.67.225), 06/17/2017 16:44:53
→ LessonWang: 在我杜撰的語法中 <>就類似數學的括號 然後類似分配律 06/17 16:46
→ LessonWang: 的概念 逐一依序地運算 06/17 16:46
這個不錯用
推 ides13: [x.a for x in [v1,v2,f,h]] 06/17 17:35
→ ides13: 試試 list comprehension 06/17 17:37
→ Django: 就這樣..還是你不是這個意思@@ 06/17 21:39
→ Django: 你也可以把一堆function的名字丟進一個list 06/17 21:45
→ Django: 然後讓他們跑迴圈分別執行你要的function 06/17 21:45
D大的這個也是可以 感謝
→ zerof: getattr 06/17 21:57
已試過 也可以 感謝
※ 編輯: 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