[问题] 让某些物件一起依序做某些事的语法

楼主: 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