Ekstraktoni, zëvendësoni dhe transformoni elemente specifike të listave (vargjeve) Python

biznes

Për të gjeneruar një listë të re në Python duke nxjerrë ose fshirë vetëm ato elemente të një liste (vargu) ekzistues që plotësojnë kushte të caktuara, ose duke kryer zëvendësime ose konvertime, përdorni kuptimet e listës.

Më poshtë shpjegohet këtu, së bashku me kodin e mostrës.

  • Forma bazë e shënimit të kuptimit të listës
  • Zbatoni procesin në të gjithë elementët e listës
  • Nxjerrja dhe fshirja e elementeve nga lista që plotësojnë kriteret
  • Zëvendësoni ose konvertoni elementët që plotësojnë kushtet e listës

Shih artikullin vijues për shembuj specifikë të listave të vargjeve.

Është gjithashtu e mundur të nxirren në mënyrë të rastësishme elemente që nuk plotësojnë kriteret.

Vini re se listat mund të ruajnë lloje të ndryshme të dhënash dhe janë rreptësisht të ndryshme nga grupet. Nëse dëshironi të trajtoni vargje në procese që kërkojnë madhësinë e memories dhe adresat e memories ose përpunimin numerik të të dhënave të mëdha, përdorni grup (bibliotekë standarde) ose NumPy.

Lista e mëposhtme është një shembull

l = list(range(-5, 6))
print(l)
# [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]

Forma bazë e shënimit të kuptimit të listës

Kur krijoni një listë të re nga një listë, kuptimi i listës është më i thjeshtë për t’u shkruar sesa për sythe.

[expression for any variable name in iterable object if conditional expression]

Një shprehje zbatohet në një element që plotëson shprehjen e kushtëzuar të një objekti të përsëritur (siç është një listë ose tuple) dhe bëhet një element i një liste të re. Shprehja “nëse me kusht” mund të hiqet, me ç’rast shprehja zbatohet për të gjithë elementët.

Shih artikullin vijues për më shumë detaje, duke përfshirë shënimin e të kuptuarit të listës së ndërthurur.

Zbatoni procesin në të gjithë elementët e listës

Për shembull, nëse dëshironi të aplikoni një përpunim për të gjithë elementët e një liste, përshkruani përpunimin e dëshiruar në shprehjen e kuptimit të listës më sipër.

l_square = [i**2 for i in l]
print(l_square)
# [25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25]

l_str = [str(i) for i in l]
print(l_str)
# ['-5', '-4', '-3', '-2', '-1', '0', '1', '2', '3', '4', '5']

Kjo mund të përdoret për të kthyer midis listave të numrave dhe listave të vargjeve.

Nxjerrja dhe fshirja e elementeve nga lista që plotësojnë kriteret

Nëse elementi do të zgjidhet vetëm nga një shprehje e kushtëzuar, ai nuk përpunohet nga një shprehje, kështu që merr formën e mëposhtme

[variable name for variable name in original list if conditional expression]

Krijohet një listë e re nga e cila nxirren vetëm elementet që plotësojnë kushtin (elementet për të cilët shprehja e kushtëzuar është e vërtetë).

l_even = [i for i in l if i % 2 == 0]
print(l_even)
# [-4, -2, 0, 2, 4]

l_minus = [i for i in l if i < 0]
print(l_minus)
# [-5, -4, -3, -2, -1]

Nëse “nëse shprehja e kushtëzuar” vendoset në “nëse jo shprehje e kushtëzuar”, ajo bëhet mohim dhe vetëm elementët që nuk plotësojnë kushtin (elementet për të cilët shprehja e kushtëzuar është false) mund të zgjidhen dhe të nxirren. Me fjalë të tjera, krijohet një listë e re nga e cila hiqen elementet që plotësojnë kushtin.

l_odd = [i for i in l if not i % 2 == 0]
print(l_odd)
# [-5, -3, -1, 1, 3, 5]

l_plus = [i for i in l if not i < 0]
print(l_plus)
# [0, 1, 2, 3, 4, 5]

Natyrisht, i njëjti rezultat merret duke specifikuar shprehjen ekuivalente të kushtëzuar pa përdorur not.

l_odd = [i for i in l if i % 2 != 0]
print(l_odd)
# [-5, -3, -1, 1, 3, 5]

l_plus = [i for i in l if i >= 0]
print(l_plus)
# [0, 1, 2, 3, 4, 5]

Pjesa e shprehjes së kushtëzuar mund të jetë kushte të shumëfishta. Mund të përdoren gjithashtu edhe shënime negative.

l_minus_or_even = [i for i in l if (i < 0) or (i % 2 == 0)]
print(l_minus_or_even)
# [-5, -4, -3, -2, -1, 0, 2, 4]

l_minus_and_odd = [i for i in l if (i < 0) and not (i % 2 == 0)]
print(l_minus_and_odd)
# [-5, -3, -1]

Zëvendësoni ose konvertoni elementët që plotësojnë kushtet e listës

Në shembullin e nxjerrjes së elementit të mësipërm, elementët që nuk plotësonin kushtet u hoqën.

Nëse dëshironi të kryeni zëvendësime, konvertime, etj. vetëm në elementë që plotësojnë kushtet, aplikoni operatorin tresh në pjesën e shprehjes së shënimit të kuptimit të listës.

Në Python, operatori tresh mund të shkruhet si më poshtë

True Value if Conditional Expression else False Value
a = 80
x = 100 if a > 50 else 0
print(x)
# 100

b = 30
y = 100 if b > 50 else 0
print(y)
# 0

Është paksa e komplikuar, por kombinimi i shënimit të kuptimit të listës dhe operatorëve tresh është si më poshtë.

[True Value if Conditional Expression else False Value for any variable name in original list]

Pjesa e mbyllur në kllapa është operatori tresh (kllapat nuk janë të nevojshme në kodin aktual).

[(True Value if Conditional Expression else False Value) for any variable name in original list]

Nëse ndonjë emër ndryshore shkruhet si është për vlerat e vërteta ose false, vlera e elementit origjinal përdoret si është. Nëse shkruhet një shprehje, zbatohet përpunimi i asaj shprehjeje.

l_replace = [100 if i > 0 else i for i in l]
print(l_replace)
# [-5, -4, -3, -2, -1, 0, 100, 100, 100, 100, 100]

l_replace2 = [100 if i > 0 else 0 for i in l]
print(l_replace2)
# [0, 0, 0, 0, 0, 0, 100, 100, 100, 100, 100]

l_convert = [i * 10 if i % 2 == 0 else i for i in l]
print(l_convert)
# [-5, -40, -3, -20, -1, 0, 1, 20, 3, 40, 5]

l_convert2 = [i * 10 if i % 2 == 0 else i / 10 for i in l]
print(l_convert2)
# [-0.5, -40, -0.3, -20, -0.1, 0, 0.1, 20, 0.3, 40, 0.5]
Copied title and URL