حذف عناصر از یک لیست (آرایه) در پایتون: clear()، pop()، remove()، del

کسب و کار

برای حذف یک عنصر از یک لیست (آرایه) از نوع لیست در پایتون، از متدهای لیست clear()، pop() و remove() استفاده کنید. همچنین می توانید موقعیت و محدوده لیست را با استفاده از index یا slice مشخص کنید و سپس با استفاده از عبارت del آن را حذف کنید.

اطلاعات زیر در اینجا ارائه شده است.

  • تمام عناصر را حذف کنید:clear()
  • یک عنصر را در موقعیت مشخص شده حذف کنید و مقدار آن را دریافت کنید.:pop()
  • عناصری را با مقدار مشخص شده جستجو می کند و اولین عنصر را حذف می کند.:remove()
  • حذف با تعیین موقعیت و محدوده در برش شاخص:del
  • حذف دسته ای چندین عنصر که معیارها را دارند.:نشانه درج لیست

توجه داشته باشید که لیست ها می توانند داده ها را از انواع مختلف ذخیره کنند و کاملاً با آرایه ها متفاوت هستند. زمانی که می‌خواهید آرایه‌هایی را برای فرآیندهایی که به اندازه حافظه یا آدرس حافظه نیاز دارند، یا برای محاسبه عددی داده‌های در مقیاس بزرگ مدیریت کنید، از آرایه (کتابخانه استاندارد) یا NumPy استفاده کنید.

تمام عناصر را حذف کنید:clear()

در متد list 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()

از متد list 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