作者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
→ mikapauli:list前加*可以拆開它 10/15 22:48
推 lc85301:最近剛遇到: zip(*state),當然這樣全部都進去了 10/15 22:52
→ lc85301:如果你要只追一部分的話,還是要用你的方法 10/15 22:52
推 ck574b027:zip(*[states(v) for v in trace_vars]),加米字號展開 10/15 22:54
→ ck574b027:咦原來我在這裡待了六分鐘。 10/15 22:56
→ lc85301:有道理…我蠢了ww 10/16 00:50
→ gp123:我剛試過OK。原來收集參數的方法也可在這使用! 10/16 11:09