Liste în Python: indici, parcurgere și modificare
Învață listele Python prin înlocuirea valorilor negative cu zero. Vezi indici, len, parcurgere, modificarea elementelor și diferența dintre nume și copie.
În acest material
O listă Python păstrează o succesiune ordonată de elemente și poate fi modificată după creare. Fiecare element are un indice, adică o poziție numerotată de la zero. În acest exercițiu citim o listă de întregi și înlocuim toate valorile negative cu zero, păstrând ordinea și lungimea listei. Valorile nenegative rămân identice.
Ce primește și ce afișează programul
Citim n, între 0 și 1000, apoi exact n numere întregi, câte unul pe linie, din intervalul -1000000..1000000. Afișăm lista rezultată pe o singură linie, cu valorile separate prin spații. Pentru n=0 afișăm o linie goală. Citirea câte unui element pe linie ne permite să folosim direct noțiunile input și int deja explicate.
Exemplu explicat pas cu pas
Pentru valorile 4, -2, 0 și -7, indicii sunt 0, 1, 2 și 3. La indicele 0 păstrăm 4; la 1 înlocuim -2 cu 0; la 2 păstrăm zeroul existent; la 3 înlocuim -7. Rezultatul este 4 0 0 0. Numărul elementelor rămâne patru, iar nicio valoare nu își schimbă poziția.
Lista 4, -2, 0, -7 devine 4, 0, 0, 0; indicii și lungimea se păstrează.Mărește schema ↗
Cum scriem soluția
Creăm lista goală prin valori = []. Repetăm citirea de n ori și adăugăm fiecare număr la sfârșit cu append. Apoi parcurgem indicii din range(len(valori)), unde len întoarce numărul elementelor. Testăm valori[i] < 0 și atribuim zero exact acelei poziții. La final, print(*valori) trimite elementele listei drept argumente separate către print, care pune spații între ele.
De ce obținem rezultatul cerut
După prelucrarea primilor i indici, acele poziții conțin deja transformarea cerută, iar pozițiile următoare păstrează datele inițiale. Fiecare pas modifică numai elementul curent și numai dacă este negativ. Prin urmare, după parcurgerea tuturor indicilor, fiecare valoare îndeplinește regula, fără eliminări sau permutări. Pentru lista goală, ambele bucle au zero pași.
Cost și limite
Timpul este O(n), deoarece citim, verificăm și afișăm fiecare element de un număr constant de ori. Lista ocupă O(n) memorie. Modificarea elementelor existente nu creează o a doua listă, iar append mărește lista treptat în etapa de citire.
Greșeli pe care le poți verifica
Indicele n nu este valid într-o listă cu n elemente: ultimul indice nenegativ este n-1. Python permite și indici negativi, dar în această parcurgere folosim numai indici nenegativi. Într-o buclă for valoare in valori, atribuirea valoare = 0 schimbă numele local, nu poziția listei. De asemenea, alta = valori creează un al doilea nume pentru aceeași listă; pentru o copie separată a acestei liste de întregi poți folosi valori.copy().
Program complet Python 3
n = int(input())
valori = []
for _ in range(n):
valori.append(int(input()))
for i in range(len(valori)):
if valori[i] < 0:
valori[i] = 0
print(*valori)
Exersează
Pentru lista [-1,-2], rezultatul este 0 0. Pentru [3,5], rezultatul rămâne 3 5. Verifică lista goală și lista cu un singur zero. Ca proprietate suplimentară, aplicarea transformării de două ori nu mai schimbă rezultatul, deoarece după primul pas nu mai există valori negative.
Continuă parcursul
Pentru citirea fiecărui întreg, vezi Citirea datelor în Python cu input și int. Pentru parcurgerea indicilor, recitește Repetarea cu for și range în Python. Pentru a reuni prelucrări într-o funcție, continuă cu Funcții în Python: parametri și return.
Pentru definițiile limbajului, consultă documentația oficială Python. Exemplele și explicațiile de aici sunt originale, construite pentru acest parcurs.
Întrebări frecvente
De ce primul indice este zero?
Aceasta este convenția de indexare a listelor Python. Pentru n elemente, indicii nenegativi valizi sunt 0 până la n-1.
Append înlocuiește ultimul element?
Nu. Append adaugă un element nou la sfârșit și crește lungimea listei cu unu.
De ce folosim indici când modificăm lista?
Prin valori[i] atribuim direct unei poziții. Simpla reasociere a unei variabile de parcurgere nu modifică elementul original.
Un pas mai departe
Autentifică-te pentru a păstra progresul în cont.