split_tab = lambda t,n,dir : (split_h,split_v)['V' in dir](complete(t,n),n )
Sauvage ! Même moi, j'aurais pas pas osé !-)
-- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in ''.split('@')])"
Gerard Flanagan
ReM wrote:
Bonjour,
Je cherche à découper un tableau en n colonnes avec le choix du sens.
Exemple : t = [1,2,3,4,5,6,7,8]
t1, t2, t3 = split_tab( t, n = 3, sens = "HORIZONTAL" ) #Résultat : t1 = [1,2,3] t2 = [4,5,6] t3 = [7,8,None]
t1, t2, t3 = split_tab( t, n = 3, sens = "VERTICAL" ) #Résultat : t1 = [1,4,7] t2 = [2,5,8] t3 = [3,6,None]
et avec generators:
def rows( N, n ): for i in xrange(N): yield i // n, i % n
def split_tab( tab, n, verticalúlse): seq = tab + [None for i in range(n - (len(tab) % n))] d = dict(zip(rows(len(seq),n),seq)) for i in range(n): ret = [] for j in range(n): if vertical: ret.append( d[(j,i)] ) else: ret.append( d[(i,j)] ) yield ret
t = [1,2,3,4,5,6,7,8]
print list(split_tab(t, 3))
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print list(split_tab(t, 3, True))
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Gerard
ReM wrote:
Bonjour,
Je cherche à découper un tableau en n colonnes avec le choix du sens.
Exemple :
t = [1,2,3,4,5,6,7,8]
t1, t2, t3 = split_tab( t, n = 3, sens = "HORIZONTAL" )
#Résultat :
t1 = [1,2,3]
t2 = [4,5,6]
t3 = [7,8,None]
t1, t2, t3 = split_tab( t, n = 3, sens = "VERTICAL" )
#Résultat :
t1 = [1,4,7]
t2 = [2,5,8]
t3 = [3,6,None]
et avec generators:
def rows( N, n ):
for i in xrange(N):
yield i // n, i % n
def split_tab( tab, n, vertical=False):
seq = tab + [None for i in range(n - (len(tab) % n))]
d = dict(zip(rows(len(seq),n),seq))
for i in range(n):
ret = []
for j in range(n):
if vertical:
ret.append( d[(j,i)] )
else:
ret.append( d[(i,j)] )
yield ret
Je cherche à découper un tableau en n colonnes avec le choix du sens.
Exemple : t = [1,2,3,4,5,6,7,8]
t1, t2, t3 = split_tab( t, n = 3, sens = "HORIZONTAL" ) #Résultat : t1 = [1,2,3] t2 = [4,5,6] t3 = [7,8,None]
t1, t2, t3 = split_tab( t, n = 3, sens = "VERTICAL" ) #Résultat : t1 = [1,4,7] t2 = [2,5,8] t3 = [3,6,None]
et avec generators:
def rows( N, n ): for i in xrange(N): yield i // n, i % n
def split_tab( tab, n, verticalúlse): seq = tab + [None for i in range(n - (len(tab) % n))] d = dict(zip(rows(len(seq),n),seq)) for i in range(n): ret = [] for j in range(n): if vertical: ret.append( d[(j,i)] ) else: ret.append( d[(i,j)] ) yield ret
t = [1,2,3,4,5,6,7,8]
print list(split_tab(t, 3))
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print list(split_tab(t, 3, True))
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Gerard
Gerard Flanagan
Gerard Flanagan wrote:
ReM wrote:
Bonjour,
Je cherche à découper un tableau en n colonnes avec le choix du sen s.
Exemple : t = [1,2,3,4,5,6,7,8]
t1, t2, t3 = split_tab( t, n = 3, sens = "HORIZONTAL" ) #Résultat : t1 = [1,2,3] t2 = [4,5,6] t3 = [7,8,None]
t1, t2, t3 = split_tab( t, n = 3, sens = "VERTICAL" ) #Résultat : t1 = [1,4,7] t2 = [2,5,8] t3 = [3,6,None]
et avec generators:
def rows( N, n ): for i in xrange(N): yield i // n, i % n
def split_tab( tab, n, verticalúlse): seq = tab + [None for i in range(n - (len(tab) % n))] d = dict(zip(rows(len(seq),n),seq)) for i in range(n): ret = [] for j in range(n): if vertical: ret.append( d[(j,i)] ) else: ret.append( d[(i,j)] ) yield ret
Je cherche à découper un tableau en n colonnes avec le choix du sen s.
Exemple :
t = [1,2,3,4,5,6,7,8]
t1, t2, t3 = split_tab( t, n = 3, sens = "HORIZONTAL" )
#Résultat :
t1 = [1,2,3]
t2 = [4,5,6]
t3 = [7,8,None]
t1, t2, t3 = split_tab( t, n = 3, sens = "VERTICAL" )
#Résultat :
t1 = [1,4,7]
t2 = [2,5,8]
t3 = [3,6,None]
et avec generators:
def rows( N, n ):
for i in xrange(N):
yield i // n, i % n
def split_tab( tab, n, vertical=False):
seq = tab + [None for i in range(n - (len(tab) % n))]
d = dict(zip(rows(len(seq),n),seq))
for i in range(n):
ret = []
for j in range(n):
if vertical:
ret.append( d[(j,i)] )
else:
ret.append( d[(i,j)] )
yield ret
Je cherche à découper un tableau en n colonnes avec le choix du sen s.
Exemple : t = [1,2,3,4,5,6,7,8]
t1, t2, t3 = split_tab( t, n = 3, sens = "HORIZONTAL" ) #Résultat : t1 = [1,2,3] t2 = [4,5,6] t3 = [7,8,None]
t1, t2, t3 = split_tab( t, n = 3, sens = "VERTICAL" ) #Résultat : t1 = [1,4,7] t2 = [2,5,8] t3 = [3,6,None]
et avec generators:
def rows( N, n ): for i in xrange(N): yield i // n, i % n
def split_tab( tab, n, verticalúlse): seq = tab + [None for i in range(n - (len(tab) % n))] d = dict(zip(rows(len(seq),n),seq)) for i in range(n): ret = [] for j in range(n): if vertical: ret.append( d[(j,i)] ) else: ret.append( d[(i,j)] ) yield ret
def split_tab(t, n=3, sens="HORIZONTAL"): t.extend([None]*(-len(t)%n)) if sens=="HORIZONTAL": return [t[i:i+n] for i in range(0,len(t),n)] else: return [t[i::n] for i in range(n)]
def split_tab(t, n=3, sens="HORIZONTAL"):
t.extend([None]*(-len(t)%n))
if sens=="HORIZONTAL":
return [t[i:i+n] for i in range(0,len(t),n)]
else:
return [t[i::n] for i in range(n)]
def split_tab(t, n=3, sens="HORIZONTAL"): t.extend([None]*(-len(t)%n)) if sens=="HORIZONTAL": return [t[i:i+n] for i in range(0,len(t),n)] else: return [t[i::n] for i in range(n)]
Je cherche à découper un tableau en n colonnes avec le choix du sen s.
Exemple : t = [1,2,3,4,5,6,7,8]
t1, t2, t3 = split_tab( t, n = 3, sens = "HORIZONTAL" ) #Résultat : t1 = [1,2,3] t2 = [4,5,6] t3 = [7,8,None]
t1, t2, t3 = split_tab( t, n = 3, sens = "VERTICAL" ) #Résultat : t1 = [1,4,7] t2 = [2,5,8] t3 = [3,6,None]
et avec generators:
def rows( N, n ): for i in xrange(N): yield i // n, i % n
def split_tab( tab, n, verticalúlse): seq = tab + [None for i in range(n - (len(tab) % n))] d = dict(zip(rows(len(seq),n),seq)) for i in range(n): ret = [] for j in range(n): if vertical: ret.append( d[(j,i)] ) else: ret.append( d[(i,j)] ) yield ret
table = Tableau(range(1,9),3) print table for r in table.rows: print r for c in table.cols: print c
-----------
Gerard
Gerard Flanagan wrote:
ReM wrote:
Bonjour,
Je cherche à découper un tableau en n colonnes avec le choix du sen s.
Exemple :
t = [1,2,3,4,5,6,7,8]
t1, t2, t3 = split_tab( t, n = 3, sens = "HORIZONTAL" )
#Résultat :
t1 = [1,2,3]
t2 = [4,5,6]
t3 = [7,8,None]
t1, t2, t3 = split_tab( t, n = 3, sens = "VERTICAL" )
#Résultat :
t1 = [1,4,7]
t2 = [2,5,8]
t3 = [3,6,None]
et avec generators:
def rows( N, n ):
for i in xrange(N):
yield i // n, i % n
def split_tab( tab, n, vertical=False):
seq = tab + [None for i in range(n - (len(tab) % n))]
d = dict(zip(rows(len(seq),n),seq))
for i in range(n):
ret = []
for j in range(n):
if vertical:
ret.append( d[(j,i)] )
else:
ret.append( d[(i,j)] )
yield ret
Je cherche à découper un tableau en n colonnes avec le choix du sen s.
Exemple : t = [1,2,3,4,5,6,7,8]
t1, t2, t3 = split_tab( t, n = 3, sens = "HORIZONTAL" ) #Résultat : t1 = [1,2,3] t2 = [4,5,6] t3 = [7,8,None]
t1, t2, t3 = split_tab( t, n = 3, sens = "VERTICAL" ) #Résultat : t1 = [1,4,7] t2 = [2,5,8] t3 = [3,6,None]
et avec generators:
def rows( N, n ): for i in xrange(N): yield i // n, i % n
def split_tab( tab, n, verticalúlse): seq = tab + [None for i in range(n - (len(tab) % n))] d = dict(zip(rows(len(seq),n),seq)) for i in range(n): ret = [] for j in range(n): if vertical: ret.append( d[(j,i)] ) else: ret.append( d[(i,j)] ) yield ret
table = Tableau(range(1,9),3) print table for r in table.rows: print r for c in table.cols: print c
-----------
Gerard
Méta-MCI
Re !
Sans doute est-il préférable d'utiliser une variable locale, pour éviter de bousiller la liste originale :
t = [1,2,3,4,5,6,7,8]
def split_tab(tt, n=3, sens="HORIZONTAL"): tt.extend([None]*(-len(t)%n)) if sens=="HORIZONTAL": return [tt[i:i+n] for i in range(0,len(tt),n)] else: return [tt[i::n] for i in range(n)]
Sans doute est-il préférable d'utiliser une variable locale, pour éviter de
bousiller la liste originale :
t = [1,2,3,4,5,6,7,8]
def split_tab(tt, n=3, sens="HORIZONTAL"):
tt.extend([None]*(-len(t)%n))
if sens=="HORIZONTAL":
return [tt[i:i+n] for i in range(0,len(tt),n)]
else:
return [tt[i::n] for i in range(n)]
Sans doute est-il préférable d'utiliser une variable locale, pour éviter de bousiller la liste originale :
t = [1,2,3,4,5,6,7,8]
def split_tab(tt, n=3, sens="HORIZONTAL"): tt.extend([None]*(-len(t)%n)) if sens=="HORIZONTAL": return [tt[i:i+n] for i in range(0,len(tt),n)] else: return [tt[i::n] for i in range(n)]
J'ai écrit trop vite, alors que j'aurais dû tourner 7 fois le clavier dans la bouche de la souris. Mais, bon, vous aurez corrigé/adapté le code vous-même.
@-salutations
MCI
Désolé !
J'ai écrit trop vite, alors que j'aurais dû tourner 7 fois le clavier dans
la bouche de la souris.
Mais, bon, vous aurez corrigé/adapté le code vous-même.
J'ai écrit trop vite, alors que j'aurais dû tourner 7 fois le clavier dans la bouche de la souris. Mais, bon, vous aurez corrigé/adapté le code vous-même.