作者gp123 (George Peng)
看板Python
标题[问题] 特殊的list iteration
时间Tue Oct 15 22:40:02 2013
有一个function states(x)会列出该变数从t=0到t=N的状态,
比如:
states(a) => [10, 20, 30...]
states(b) => [5, 6, 7...]
states(c) => [0, 0, 0...]
现在有一个list用来储存所有要分析的变数:
trace_vars = [a, b, c, x, y, z, ...]
如果我想以t为轴,迭代观察每个变数在时间t的状态,
比方说:
t=0: (10, 5, 0...)
t=1: (20, 6, 0...)
t=3: (30, 7, 0...)
通常可使用zip来达成,
比方说如果只观察a、b、c这三个变j:
for S in zip(states(a), states(b), states(c)):
...
问题是现在要观察的变数存在list里,
这个list是可能变动的,
不可能一一写死在zip的参数当中,
如果使用
zip([states(v) for v in trace_vars]),
那麽zip只会当成单一个list来处理。
想请问在Python有什麽可行的方法吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.88.144
1F:→ mikapauli:list前加*可以拆开它 10/15 22:48
2F:推 lc85301:最近刚遇到: zip(*state),当然这样全部都进去了 10/15 22:52
3F:→ lc85301:如果你要只追一部分的话,还是要用你的方法 10/15 22:52
4F:推 ck574b027:zip(*[states(v) for v in trace_vars]),加米字号展开 10/15 22:54
5F:→ ck574b027:咦原来我在这里待了六分钟。 10/15 22:56
6F:→ lc85301:有道理…我蠢了ww 10/16 00:50
7F:→ gp123:我刚试过OK。原来收集参数的方法也可在这使用! 10/16 11:09