Używam następującego (nieprzyjemnego) fragmentu do iteracji na dwuwymiarowej liście z ciągami. Sprawdza, czy jedna z wartości to '0'
i czy nie jest to ostatni element. Jeśli tak nie jest, przełącza wartości bieżącego elementu (który jest '0'
) z wartością następnego elementu.Przesyłaj wszystkie znaki spoza zakresu '0' na początek
Co zamierzałem osiągnąć za pomocą tej funkcji, to przesunięcie wszystkich wartości innych niż '0'
do tyłu. To oczywiście nie działa zgodnie z oczekiwaniami (jest to początek), ale nie mogę wymyślić sposobu, aby to zrobić bez przekształcania go w wielki bałagan.
Jaki brakujący element układanki? Czy rekursja pomogłaby tutaj?
['0', '2', '0', '4']
powinna przekształcić
['2', '4', '0', '0']
i
['0', '3', '1', '0', '2']
do
['3', '1', '2', '0', '0']
Obecny fragment:
for idx, x in enumerate(self.list_x):
for idy, i in enumerate(x):
if i == '0':
try:
if x[idy+1]:
pass
except IndexError:
pass
else:
temp = i
self.list_x[idx][idy] = x[idy+1]
self.list_x[idx][idy+1] = temp
Proszę rozważyć edycji posta, aby dodać więcej wyjaśnień na temat tego, co kod robi i dlaczego to będzie rozwiązać ten problem. Odpowiedź, która najczęściej zawiera kod (nawet jeśli działa) zazwyczaj nie pomoże OP zrozumieć ich problemu. – SuperBiasedMan