Python дээр жагсаалтаас (массив) элементүүдийг устгах: clear(), pop(), remove(), del

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

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

Энд дараах мэдээллийг хүргэж байна.

  • Бүх элементүүдийг устгана уу:clear()
  • Заасан байрлал дахь элементийг устгаад утгыг нь авна уу.:pop()
  • Заасан утгатай элементүүдийг хайж, эхний элементийг устгана.:remove()
  • Индекс хэсэгт байрлал, мужийг зааж устгаж байна:del
  • Шалгуурт нийцсэн олон элементийг багцаар устгана.:жагсаалтад оруулах заалт

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

Бүх элементүүдийг устгана уу:clear()

Жагсаалтын аргад clear() бүх элементүүдийг устгаснаар хоосон жагсаалт гарч ирнэ.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

l.clear()
print(l)
# []

Заасан байрлал дахь элементийг устгаад утгыг нь авна уу.:pop()

Жагсаалтын pop() аргыг заасан байрлал дахь элементийг устгаад тухайн элементийн утгыг авах боломжтой.

Эхний (анхны) тоо нь 0 байна.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(0))
# 0

print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(3))
# 4

print(l)
# [1, 2, 3, 5, 6, 7, 8, 9]

Сөрөг утгыг мөн төгсгөлөөс (сүүлийн) байрлалыг тодорхойлоход ашиглаж болно. Төгсгөл (сүүлийн) нь -1 байна.

print(l.pop(-2))
# 8

print(l)
# [1, 2, 3, 5, 6, 7, 9]

Хэрэв аргументыг орхигдуулсан бөгөөд ямар ч байрлал заагаагүй бол төгсгөлийн (сүүлийн) элементийг устгана.

print(l.pop())
# 9

print(l)
# [1, 2, 3, 5, 6, 7]

Байгаагүй байрлалыг зааж өгвөл алдаа гарна.

# print(l.pop(100))
# IndexError: pop index out of range

Эхний элементийг устгадаг pop(0) нь дараах зардлыг шаарддаг бөгөөд үр ашигтай ажиллагаа биш гэдгийг анхаарна уу. Жагсаалт дээрх янз бүрийн үйлдлийн тооцооллын нарийн төвөгтэй байдлыг албан ёсны вики дээрх дараах хуудаснаас харна уу.
O(n)

O(1)Deque төрлийг номын сангийн цуглуулгын стандарт модульд энэ зардлаар дээд талын элементүүдийг устгадаг төрөл хэлбэрээр өгсөн болно. Жишээлбэл, хэрэв та өгөгдлийг дараалал (FIFO) гэж үзэхийг хүсвэл deque ашиглах нь илүү үр дүнтэй байдаг.

Заасан утгатай элементүүдийг хайж, эхний элементийг устгана.:remove()

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

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']

l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']

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

l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']

Хэрэв байхгүй утгыг зааж өгсөн бол алдаа гарна.

# l.remove('xxx')
# ValueError: list.remove(x): x not in list

Индекс хэсэгт байрлал, мужийг зааж устгаж байна:del

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

Устгах элементийг индексээр нь зааж өгнө үү. Эхний (эхний) индекс нь 0, сүүлчийн (эцсийн) индекс нь -1 байна.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[0]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[-1]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8]

del l[6]
print(l)
# [1, 2, 3, 4, 5, 6, 8]

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

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[2:5]
print(l)
# [0, 1, 5, 6, 7, 8, 9]

l = list(range(10))
del l[:3]
print(l)
# [3, 4, 5, 6, 7, 8, 9]

l = list(range(10))
del l[4:]
print(l)
# [0, 1, 2, 3]

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

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

l = list(range(10))
del l[:]
print(l)
# []

[start:stop:step]Хэрэв та зүсмэл дэх мужийг ийм байдлаар зааж, өсөн нэмэгдэх алхамыг зааж өгвөл олон үсрэх элементийг нэг дор устгаж болно.

l = list(range(10))
del l[2:8:2]
print(l)
# [0, 1, 3, 5, 7, 8, 9]

l = list(range(10))
del l[::3]
print(l)
# [1, 2, 4, 5, 7, 8]

Зүсэх талаар дэлгэрэнгүй мэдээллийг дараах нийтлэлээс үзнэ үү.

Шалгуурт нийцсэн олон элементийг багцаар устгана.:жагсаалтад оруулах заалт

Нөхцөлийг хангасан элементүүдийг арилгах үйл явц нь нөхцөлийг хангаагүй элементүүдийг үлдээх (олборлох) үйл явцтай тэнцүү юм. Жагсаалтын ойлгох тэмдэглэгээг энэ төрлийн боловсруулалтад ашигладаг.

Сондгой эсвэл тэгш элементүүдийг арилгах жишээг (= тэгш эсвэл сондгой элементүүдийг үлдээх) доор харуулав.
%Энэ бол үлдсэн оператор юм.
i % 2
Энэ нь i-ийн 2-т хуваагдсан үлдэгдэл юм.

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

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

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

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

print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Бусад жишээнүүд. Нөхцөлт илэрхийллээс хамааран янз бүрийн боловсруулалт хийх боломжтой.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'David']

print([s for s in l if s != 'Bob'])
# ['Alice', 'Charlie', 'David']

print([s for s in l if s.endswith('e')])
# ['Alice', 'Charlie']

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

print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']
Copied title and URL