[問題] 特殊的list iteration

看板Python作者 (George Peng)時間11年前 (2013/10/15 14:40), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串1/1
有一個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

10/15 22:48, , 1F
list前加*可以拆開它
10/15 22:48, 1F

10/15 22:52, , 2F
最近剛遇到: zip(*state),當然這樣全部都進去了
10/15 22:52, 2F

10/15 22:52, , 3F
如果你要只追一部分的話,還是要用你的方法
10/15 22:52, 3F

10/15 22:54, , 4F
zip(*[states(v) for v in trace_vars]),加米字號展開
10/15 22:54, 4F

10/15 22:56, , 5F
咦原來我在這裡待了六分鐘。
10/15 22:56, 5F

10/16 00:50, , 6F
有道理…我蠢了ww
10/16 00:50, 6F

10/16 11:09, , 7F
我剛試過OK。原來收集參數的方法也可在這使用!
10/16 11:09, 7F
文章代碼(AID): #1INLF55F (Python)