我有任意的(但統一的)數字列表的任意列表。 (它們是我想要繪製角的n空間中bin的邊界座標,但這並不重要。)我想生成所有可能組合的列表。所以:[[1,2],[3,4],[5,6]]產生[[1,3,5],[1,3,6],[1,4,5],[1, 4,6],[1,2,3,5] ...]。python遞歸列表中沒有isinstance(不同)
任何人都可以幫助我改進此代碼嗎?我不喜歡isinstance()調用,但我不能找出更多的python-ish方法來追加第一遍的元素,當第一個arg(pos)是一個數字列表而不是列表列表。
def recurse(pos, vals):
out = []
for p in pos:
pl = p if isinstance(p,list) else [p]
for x in vals[0]:
out.append(pl + [x])
if vals[1:]:
return recurse(out, vals[1:])
else:
return out
a = [[1,2,3],[4,5,6],[7,8,9],[11,12,13]]
b = recurse(a[0], a[1:])
謝謝。