Python жагсаалтын (массив) тодорхой элементүүдийг задлах, солих, өөрчлөх

Бизнес эрхэлдэг

Python дээр шинэ жагсаалт үүсгэхийн тулд одоо байгаа жагсаалтын (массив) тодорхой нөхцөлийг хангасан элементүүдийг задлах, устгах, эсвэл солих, хөрвүүлэх замаар жагсаалтын ойлголтыг ашиглана уу.

Дараахыг жишээ кодын хамт энд тайлбарлав.

  • Жагсаалтыг ойлгох тэмдэглэгээний үндсэн хэлбэр
  • Жагсаалтын бүх элементүүдэд үйл явцыг хэрэглээрэй
  • Жагсаалтаас шалгуурыг хангасан элементүүдийг задлах, устгах
  • Жагсаалтын нөхцлийг хангасан элементүүдийг солих эсвэл хөрвүүлэх

Мөрийн жагсаалтын тодорхой жишээг дараах нийтлэлээс үзнэ үү.

Мөн шалгуурыг хангаагүй элементүүдийг санамсаргүй байдлаар гаргаж авах боломжтой.

Жагсаалт нь өөр өөр төрлийн өгөгдлийг хадгалах боломжтой бөгөөд массиваас эрс ялгаатай гэдгийг анхаарна уу. Хэрэв та санах ойн хэмжээ, санах ойн хаяг эсвэл том өгөгдлийн тоон боловсруулалт шаарддаг процессуудад массивыг зохицуулахыг хүсвэл массив (стандарт номын сан) эсвэл NumPy-г ашиглана уу.

Дараах жагсаалт нь жишээ юм

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

Жагсаалтыг ойлгох тэмдэглэгээний үндсэн хэлбэр

Жагсаалтаас шинэ жагсаалт үүсгэх үед жагсаалтын ойлголтууд нь гогцооноос илүү бичихэд хялбар байдаг.

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

Илэрхийллийг давтагдах объектын нөхцөлт илэрхийлэлд (жагсаалт эсвэл багц гэх мэт) хангасан элементэд хэрэглэж, шинэ жагсаалтын элемент болдог. “Хэрэв нөхцөлт илэрхийлэл” -ийг орхиж болох бөгөөд энэ тохиолдолд илэрхийлэл нь бүх элементүүдэд хэрэглэгдэх болно.

Дэлгэрэнгүй мэдээллийг дараах нийтлэлээс үзнэ үү, үүнд үүрлэсэн жагсаалтын ойлголтын тэмдэглэгээ орно.

Жагсаалтын бүх элементүүдэд үйл явцыг хэрэглээрэй

Жишээлбэл, хэрэв та жагсаалтын бүх элементүүдэд зарим боловсруулалт хийхийг хүсвэл дээрх жагсаалтыг ойлгох илэрхийлэлд хүссэн боловсруулалтыг тайлбарлана уу.

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

Үүнийг тоонуудын жагсаалт болон мөрийн жагсаалт хооронд хөрвүүлэхэд ашиглаж болно.

Жагсаалтаас шалгуурыг хангасан элементүүдийг задлах, устгах

Хэрэв элементийг зөвхөн нөхцөлт илэрхийллээр сонгох бол түүнийг илэрхийллээр боловсруулахгүй тул дараах хэлбэрийг авна.

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

Зөвхөн нөхцөлийг хангасан элементүүдийг (нөхцөлт илэрхийлэл үнэн байх элементүүд) гаргаж авсан шинэ жагсаалт бий болно.

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]

Хэрэв “хэрэв нөхцөлт илэрхийлэл&#8221;-ийг “хэрэв болзолт илэрхийлэл биш бол&#8221; гэж тохируулсан бол энэ нь үгүйсгэл болж, зөвхөн нөхцөлийг хангаагүй элементүүдийг (нөхцөлт илэрхийлэл худал болсон элементүүдийг) сонгож задлах боломжтой. Өөрөөр хэлбэл, нөхцөлийг хангасан элементүүдээс хасагдсан шинэ жагсаалт бий болно.

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]

Мэдээжийн хэрэг, үгүй ​​гэсэн үг ашиглахгүйгээр эквивалент нөхцөлт илэрхийллийг зааж өгснөөр ижил үр дүнд хүрнэ.

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]

Нөхцөлт илэрхийллийн хэсэг нь олон нөхцөл байж болно. Сөрөг тэмдэглэгээг бас ашиглаж болно.

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]

Жагсаалтын нөхцлийг хангасан элементүүдийг солих эсвэл хөрвүүлэх

Дээрх элементийн олборлолтын жишээнд нөхцөлийг хангаагүй элементүүдийг устгасан.

Хэрэв та зөвхөн нөхцлүүдийг хангасан элементүүд дээр орлуулах, хөрвүүлэх гэх мэтийг гүйцэтгэхийг хүсвэл жагсаалтын ойлголтын тэмдэглэгээний илэрхийллийн хэсэгт гурвалсан операторыг хэрэглэнэ.

Python хэл дээр гурвалсан операторыг дараах байдлаар бичиж болно

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

Энэ нь жаахан төвөгтэй боловч жагсаалт ойлгох тэмдэглэгээ болон гурвалсан операторуудын хослол нь дараах байдалтай байна.

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

Хаалтанд орсон хэсэг нь гуравдагч оператор (бодит кодонд хаалт шаардлагагүй).

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

Хэрэв ямар нэгэн хувьсагчийн нэрийг үнэн эсвэл худал утгын дагуу бичсэн бол анхны элементийн утгыг байгаагаар нь ашиглана. Хэрэв илэрхийлэл бичигдсэн бол тухайн илэрхийллийн боловсруулалтыг хэрэгжүүлнэ.

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