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

作者: LessonWang (橘白Cat)   2017-06-17 15:38:18
不好意思 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
也就是說在<和>之間 是一個變數串列
視為一整體做某些運算
有這樣的語法嗎?
作者: Django (Cython)   2017-06-17 15:57:00
把所有變數直接丟進list就可以了(?)
作者: LessonWang (橘白Cat)   2017-06-17 16:46:00
在我杜撰的語法中 <>就類似數學的括號 然後類似分配律的概念 逐一依序地運算
作者: chessman416 (哈士奇)   2017-06-17 17:15:00
試試看map指令 http://tinyurl.com/y8rd5otl
作者: ides13 (juso)   2017-06-17 17:35:00
[x.a for x in [v1,v2,f,h]]試試 list comprehension
作者: Django (Cython)   2017-06-17 21:39:00
http://imgur.com/tUHwG5x就這樣..還是你不是這個意思@@http://imgur.com/OTYQjjo你也可以把一堆function的名字丟進一個list然後讓他們跑迴圈分別執行你要的function
作者: zerof (貓橘毛發呆雕像)   2017-06-17 21:57:00
getattr

Links booklink

Contact Us: admin [ a t ] ucptt.com