Iterate over all possible combinations of list elements and use as indices in Python -
i have following list:
indices = [125,144,192] i want generate such structure want use combination of 3 of these numbers indices 3d list:
mylist[i][j][k] = somevar where i,j, , k loop on of combinations shown below:
i,j,k = 0,0,0 i,j,k = 0,0,192 i,j,k = 0,144,0 i,j,k = 125,0,0 i,j,k = 0,144,192 i,j,k = 125,0,192 i,j,k = 125,144,0 i,j,k = 125,144,192 in other words, i'd simplify following:
for in [0,125]: j in [0,144]: k in [0,192]: mylist[i][j][k] = somevar what pythonic way this?
you can use itertools.product :
>>> list(product([0,125],[0,144],[0,192])) [(0, 0, 0), (0, 0, 192), (0, 144, 0), (0, 144, 192), (125, 0, 0), (125, 0, 192), (125, 144, 0), (125, 144, 192)] or more general solution can use izip (in python 3 zip efficient ) , repeat create desire pairs , pass them product :
>>> indices = [125,144,192] >>> itertools import product,izip,repeat >>> list(product(*izip(repeat(0,len(indices)),indices))) [(0, 0, 0), (0, 0, 192), (0, 144, 0), (0, 144, 192), (125, 0, 0), (125, 0, 192), (125, 144, 0), (125, 144, 192)] >>> and indexing can :
for i,j,k in product(*izip(repeat(0,len(indices)),indices)): # stuff mylist[i][j][k]
Comments
Post a Comment