作者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://webptt.com/cn.aspx?n=bbs/Python/M.1497685100.A.900.html
1F:推 Django: 把所有变数直接丢进list就可以了(?) 06/17 15:57
真的假的?
※ 编辑: LessonWang (27.246.67.225), 06/17/2017 16:44:53
2F:→ LessonWang: 在我杜撰的语法中 <>就类似数学的括号 然後类似分配律 06/17 16:46
3F:→ LessonWang: 的概念 逐一依序地运算 06/17 16:46
这个不错用
5F:推 ides13: [x.a for x in [v1,v2,f,h]] 06/17 17:35
6F:→ ides13: 试试 list comprehension 06/17 17:37
8F:→ Django: 就这样..还是你不是这个意思@@ 06/17 21:39
10F:→ Django: 你也可以把一堆function的名字丢进一个list 06/17 21:45
11F:→ Django: 然後让他们跑回圈分别执行你要的function 06/17 21:45
D大的这个也是可以 感谢
12F:→ 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