Par exemple, si ma liste imbriquée d'origine est :
[[' ', 'Y', ' ', 'X'],
['S', ' ', 'V', ' '],
['T', 'X', 'Y', 'S'],
['X', ' ', 'X', 'Y']]
J'aimerais que le résultat soit le suivant :
[[' ', ' ', ' ', ' '],
['S', ' ', 'V', 'X'],
['T', 'Y', 'Y', 'S'],
['X', 'X', 'X', 'Y']]
Il s'agit donc de faire descendre toutes les lettres vers le bas sans supprimer les espaces et en conservant la structure de la liste.
Voici ce que j'ai pour l'instant. Mon résultat me donne ceci qui est incorrect.
[[' ', ' ', ' ', ' '],
['S', 'Y', 'V', 'X'],
['T', ' ', 'Y', 'S'],
['X', 'X', 'X', 'Y']]
def find_letters(m,constant):
try:
for i in range(len(m[constant])):
if m[constant][i] == ' ':
if m[constant - 1][i] != ' ':
m[constant][i] = m[constant - 1][i]
m[constant - 1][i] = ' '
find_letters(m,constant - 1)
except IndexError:
pass
l = [[' ', 'Y', ' ', 'X'],
['S', ' ', 'V', ' '],
['T', 'X', 'Y', 'S'],
['X', ' ', 'X', 'Y']]
constant = -1
(find_letters(l,constant))