看板 Python 關於我們 聯絡資訊
有一個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