Ekstrak, ngganti, lan ngowahi unsur tartamtu saka dhaptar Python (array)

Bisnis

Kanggo ngasilake dhaptar anyar ing Python kanthi ngekstrak utawa mbusak mung unsur-unsur saka dhaptar sing ana (larik) sing nyukupi kahanan tartamtu, utawa kanthi nindakake panggantos utawa konversi, gunakake pangerten dhaptar.

Ing ngisor iki diterangake ing kene, bebarengan karo kode sampel.

  • Wangun dhasar saka notasi pangerten dhaptar
  • Aplikasi proses kanggo kabeh unsur dhaftar
  • Ekstrak lan mbusak unsur saka dhaptar sing cocog karo kritéria
  • Ngganti utawa Ngonversi unsur sing gawe marem kondisi dhaftar

Deleng artikel ing ngisor iki kanggo conto tartamtu saka dhaptar strings.

Sampeyan uga bisa ngekstrak unsur sing ora cocog karo kritéria kasebut.

Elinga yen dhaptar bisa nyimpen macem-macem jinis data lan beda banget karo array. Yen sampeyan pengin nangani array ing pangolahan sing mbutuhake ukuran memori lan alamat memori utawa pangolahan numerik saka data gedhe, nggunakake array (perpustakaan standar) utawa NumPy.

Dhaptar ing ngisor iki minangka conto

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

Wangun dhasar saka notasi pangerten dhaptar

Nalika nggawe dhaptar anyar saka dhaptar, pangerten dhaptar luwih gampang ditulis tinimbang kanggo puteran.

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

Ekspresi ditrapake kanggo unsur sing nyukupi ekspresi kondisional saka obyek sing bisa diulang (kayata dhaptar utawa tuple) lan dadi unsur saka dhaptar anyar. “Yen ekspresi kondisional” bisa diilangi, mula ekspresi kasebut ditrapake kanggo kabeh unsur.

Deleng artikel ing ngisor iki kanggo rincian liyane, kalebu notasi pangerten dhaptar bersarang.

Aplikasi proses kanggo kabeh unsur dhaftar

Contone, yen sampeyan pengin aplikasi sawetara pangolahan kanggo kabeh unsur dhaftar, njlèntrèhaké pangolahan sing dikarepake ing expression pangerten dhaftar ndhuwur.

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']

Iki bisa digunakake kanggo ngowahi antarane dhaptar nomer lan dhaptar senar.

Ekstrak lan mbusak unsur saka dhaptar sing cocog karo kritéria

Yen unsur kasebut mung dipilih kanthi ekspresi kondisional, unsur kasebut ora diproses kanthi ekspresi, mula ana ing ngisor iki.

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

Dhaptar anyar digawe saka mung unsur sing nyukupi kondisi kasebut (unsur sing ekspresi kondisional bener) diekstrak.

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]

Yen “yen ekspresi kondisional” disetel dadi “yen ora ekspresi kondisional,” dadi negasi, lan mung unsur sing ora nyukupi kondisi kasebut (unsur sing ekspresi kondisional palsu) bisa dipilih lan diekstrak. Ing tembung liyane, dhaftar anyar kui saka kang unsur sing gawe marem kondisi dibusak.

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]

Mesthi, asil sing padha ditampa kanthi nemtokake ekspresi kondisional sing padha tanpa nggunakake ora.

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]

Bagian ekspresi kondisional bisa dadi pirang-pirang kondisi. Ora negatif uga bisa digunakake.

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]

Ngganti utawa Ngonversi unsur sing gawe marem kondisi dhaftar

Ing conto ekstraksi unsur ing ndhuwur, unsur sing ora nyukupi syarat kasebut dicopot.

Yen sampeyan pengin nindakake substitusi, konversi, lan liya-liyane mung ing unsur sing nyukupi syarat, aplikasi operator ternary menyang bagean ekspresi saka notasi pangerten dhaptar.

Ing Python, operator ternary bisa ditulis kaya ing ngisor iki

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

Iku rada rumit, nanging kombinasi notasi pangerten dhaptar lan operator ternary kaya ing ngisor iki.

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

Bagean sing dilampirake ing kurung yaiku operator ternary (kurung ora perlu ing kode nyata).

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

Yen ana jeneng variabel sing ditulis kanggo nilai sing bener utawa salah, nilai unsur asli digunakake. Yen ekspresi ditulis, pangolahan ekspresi kasebut ditrapake.

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]