آموزش پایتون - حذف آیتم‌ها

حذف آیتم‌ها از مجموعه (Set)

حذف آیتم‌های مجموعه به معنای پاک کردن عناصر از یک مجموعه است. در پایتون، مجموعه‌ها مجموعه‌هایی تغییرپذیر و نامرتب از عناصر منحصربه‌فرد هستند و متدهای مختلفی برای حذف آیتم‌ها از یک مجموعه بر اساس معیارهای متفاوت وجود دارد.

ما می‌توانیم آیتم‌های مجموعه را در پایتون با استفاده از متدهای مختلفی مانند ()remove() ،discard() ،pop() ،clear و پیمایش مجموعه (set comprehension) حذف کنیم. هر متد روش‌های متفاوتی برای حذف عناصر از یک مجموعه بر اساس معیارهایی یا شرایطی خاص ارائه می‌دهد.

حذف آیتم مجموعه با استفاده از متد ()remove

متد ()remove در پایتون برای حذف اولین وقوع یک آیتم مشخص‌شده از یک مجموعه استفاده می‌شود.

ما می‌توانیم با مشخص کردن عنصری که می‌خواهیم از مجموعه حذف کنیم، آیتم‌های مجموعه را با استفاده از متد ()remove حذف کنیم. اگر عنصر در مجموعه موجود باشد، حذف خواهد شد. با این حال، اگر عنصر یافت نشود، متد ()remove خطای KeyError ایجاد می‌کند.

مثال

در مثال زیر، عنصر "Physics" را از مجموعه "my_set" با استفاده از متد ()remove حذف می‌کنیم −

my_set = {"Rohan", "Physics", 21, 69.75}
print ("Original set: ", my_set)

my_set.remove("Physics")
print ("Set after removing: ", my_set)

خروجی زیر حاصل خواهد شد −

Original set:  {21, 69.75, 'Rohan', 'Physics'}
Set after removing:  {21, 69.75, 'Rohan'}

مثال

اگر عنصری که قرار است حذف شود در مجموعه یافت نشود، متد ()remove خطای KeyError ایجاد می‌کند −

my_set = {"Rohan", "Physics", 21, 69.75}
print ("Original set: ", my_set)

my_set.remove("PHP")
print ("Set after removing: ", my_set)

خطایی مطابق زیر دریافت می‌کنیم −

Original set:  {'Physics', 21, 69.75, 'Rohan'}
Traceback (most recent call last):
  File "/home/cg/root/664c365ac1c3c/main.py", line 4, in <module>
    my_set.remove("PHP")
KeyError: 'PHP'

حذف آیتم مجموعه با استفاده از متد ()discard

متد ()discard در کلاس set مشابه متد ()remove است. تنها تفاوت این است که حتی اگر شیء مورد نظر برای حذف از قبل در مجموعه موجود نباشد، خطایی ایجاد نمی‌کند.

مثال

در این مثال، ما از متد ()discard برای حذف یک عنصر از مجموعه استفاده می‌کنیم، صرف‌نظر از اینکه آن عنصر موجود باشد یا خیر −

my_set = {"Rohan", "Physics", 21, 69.75}
print ("Original set: ", my_set)

# removing an existing element
my_set.discard("Physics")
print ("Set after removing Physics: ", my_set)

# removing non-existing element
my_set.discard("PHP")
print ("Set after removing non-existent element PHP: ", my_set)

خروجی کد بالا به شرح زیر است −

Original set:  {21, 'Rohan', 69.75, 'Physics'}
Set after removing Physics:  {21, 'Rohan', 69.75}
Set after removing non-existent element PHP:  {21, 'Rohan', 69.75}

حذف آیتم مجموعه با استفاده از متد ()pop

همچنین می‌توانیم آیتم‌های مجموعه را با استفاده از متد ()pop و از طریق حذف و بازگرداندن یک عنصر دلخواه از مجموعه حذف کنیم. اگر مجموعه خالی باشد، متد ()pop خطای KeyError ایجاد می‌کند.

مثال

در مثال زیر، یک مجموعه با عناصر "1" تا "5" تعریف می‌کنیم و یک عنصر دلخواه را از آن با استفاده از متد ()pop حذف می‌کنیم −

# Defining a set
my_set = {1, 2, 3, 4, 5}

# removing and returning an arbitrary element from the set
removed_element = my_set.pop()

# Printing the removed element and the updated set
print("Removed Element:", removed_element)
print("Updated Set:", my_set)

خروجی نشان داده شده در زیر را دریافت می‌کنیم −

Removed Element: 1
Updated Set: {2, 3, 4, 5}

مثال

اگر سعی کنیم عنصری را از یک مجموعه خالی حذف کنیم، متد ()pop خطای KeyError ایجاد می‌کند −

# Defining an empty set
empty_set = set()

# Removing an arbitrary element from the empty set
removed_element = empty_set.pop()

خطای ایجاد شده به صورت زیر است −

Traceback (most recent call last):
  File "/home/cg/root/664c69620cd40/main.py", line 5, in <module>
removed_element = empty_set.pop()
KeyError: 'pop from an empty set'

حذف آیتم با استفاده از متد ()clear

متد ()clear در کلاس set تمام آیتم‌های موجود در یک شیء مجموعه را حذف کرده و یک مجموعه خالی باقی می‌گذارد.

ما می‌توانیم آیتم‌های مجموعه را با استفاده از متد ()clear با حذف تمام عناصر از مجموعه پاک کنیم و آن را عملاً خالی سازیم.

مثال

در مثال زیر، یک مجموعه با عناصر "1" تا "5" تعریف می‌کنیم و سپس از متد ()clear برای حذف تمامی عناصر از مجموعه استفاده می‌کنیم −

# Defining a set with multiple elements
my_set = {1, 2, 3, 4, 5}

# Removing all elements from the set
my_set.clear()
# Printing the updated set
print("Updated Set:", my_set)

خروجی زیر را تولید خواهد کرد −

Updated Set: set()

حذف آیتم‌های مشترک در هر دو مجموعه

شما می‌توانید آیتم‌هایی را که در هر دو مجموعه وجود دارند (یعنی اشتراک دو مجموعه) با استفاده از متد ()difference_update یا عملگر تفریق (=-) حذف کنید. این کار تمام عناصری را که در هر دو مجموعه موجود هستند از مجموعه اصلی حذف می‌کند.

مثال

در این مثال، دو مجموعه "s1" و "s2" را تعریف می‌کنیم و سپس از متد ()difference_update برای حذف عناصری از "s1" که در "s2" نیز هستند استفاده می‌کنیم −

s1 = {1,2,3,4,5}
s2 = {4,5,6,7,8}
print ("s1 before running difference_update: ", s1)
s1.difference_update(s2)
print ("s1 after running difference_update: ", s1)

پس از اجرای کد بالا، خروجی زیر را دریافت می‌کنیم −

s1 before running difference_update: {1, 2, 3, 4, 5}
s1 after running difference_update: {1, 2, 3}
set()

حذف آیتم‌های موجود در هر یک از مجموعه‌ها

برای حذف آیتم‌هایی که در هر یک از دو مجموعه وجود دارند، می‌توانید از عملیات تفاضل متقارن استفاده کنید. تفاضل متقارن بین دو مجموعه منجر به مجموعه‌ای شامل عناصری می‌شود که در یکی از مجموعه‌ها هستند اما در اشتراک آن‌ها وجود ندارند.

در پایتون، عملیات تفاضل متقارن با استفاده از عملگر ^ یا متد ()symmetric_difference قابل انجام است.

مثال

در مثال زیر، دو مجموعه "set1" و "set2" را تعریف می‌کنیم. سپس از عملگر تفاضل متقارن (^) برای ایجاد یک مجموعه جدید "result_set" شامل عناصری که در "set1" یا "set2" هستند اما در هر دو نیستند استفاده می‌کنیم −

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}

# Removing items that exist in either set 
result_set = set1 ^ set2
print("Resulting Set:", result_set)

خروجی کد بالا به شرح زیر است −

Resulting Set: {1, 2, 5, 6}

حذف آیتم‌های غیرمشترک مجموعه

شما می‌توانید آیتم‌های غیرمشترک بین دو مجموعه را با استفاده از متد ()intersection_update حذف کنید. اشتراک دو مجموعه منجر به مجموعه‌ای می‌شود که تنها شامل عناصری است که در هر دو مجموعه موجود هستند.

برای نگه‌داشتن فقط عناصر مشترک در یکی از مجموعه‌های اصلی و حذف عناصر غیرمشترک، می‌توانید مجموعه را با اشتراک آن بروزرسانی کنید.

مثال

در این مثال، دو مجموعه "set1" و "set2" را تعریف می‌کنیم. سپس از متد ()intersection_update برای تغییر "set1" استفاده می‌کنیم تا فقط شامل عناصری باشد که در "set2" نیز وجود دارند −

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}

# Keeping only common items in set1
set1.intersection_update(set2)
print("Set 1 after keeping only common items:", set1)

خروجی کد بالا به صورت زیر است −

Set 1 after keeping only common items: {3, 4}

متد ()intersection

متد ()intersection در کلاس set مشابه متد ()intersection_update آن است، با این تفاوت که یک شیء مجموعه جدید برمی‌گرداند که شامل آیتم‌های مشترک در مجموعه‌های موجود است.

سنتکس

سنتکس پایه متد ()intersection به صورت زیر است −

set.intersection(obj)

که در آن، obj یک شیء مجموعه است.

مقدار بازگشتی

متد ()intersection یک شیء مجموعه برمی‌گرداند و فقط آیتم‌هایی را نگه می‌دارد که در خودش و obj مشترک هستند.

مثال

در مثال زیر، دو مجموعه "s1" و "s2" را تعریف می‌کنیم، سپس از متد ()intersection برای ایجاد یک مجموعه جدید "s3" شامل عناصری که در هر دو مجموعه "s1" و "s2" مشترک هستند استفاده می‌کنیم −

s1 = {1,2,3,4,5}
s2 = {4,5,6,7,8}
print ("s1: ", s1, "s2: ", s2)
s3 = s1.intersection(s2)
print ("s3 = s1 & s2: ", s3)

خروجی زیر را تولید خواهد کرد −

s1: {1, 2, 3, 4, 5} s2: {4, 5, 6, 7, 8}
s3 = s1 & s2: {4, 5}

بروزرسانی تفاضل متقارن آیتم‌های مجموعه

تفاضل متقارن بین دو مجموعه، مجموعه‌ای از تمام آیتم‌های غیرمشترک است که عناصر مشترک را رد می‌کند. متد ()symmetric_difference_update یک مجموعه را با تفاضل متقارن بین خودش و مجموعه‌ای که به عنوان آرگومان داده شده بروزرسانی می‌کند.

مثال

در مثال زیر، دو مجموعه "s1" و "s2" را تعریف می‌کنیم، سپس از متد ()symmetric_difference_update برای تغییر "s1" استفاده می‌کنیم تا شامل عناصری باشد که در "s1" یا "s2" هستند، اما در هر دو نیستند −

s1 = {1,2,3,4,5}
s2 = {4,5,6,7,8}
print ("s1: ", s1, "s2: ", s2)
s1.symmetric_difference_update(s2)
print ("s1 after running symmetric difference ", s1)

نتیجه به دست آمده مطابق زیر است −

s1: {1, 2, 3, 4, 5} s2: {4, 5, 6, 7, 8}
s1 after running symmetric difference {1, 2, 3, 6, 7, 8}

تفاضل متقارن آیتم‌های مجموعه

متد ()symmetric_difference در کلاس set مشابه متد ()symmetric_difference_update است، با این تفاوت که یک شیء مجموعه جدید برمی‌گرداند که دارنده تمام آیتم‌های دو مجموعه منهای آیتم‌های مشترک است.

مثال

در مثال زیر، دو مجموعه "s1" و "s2" را تعریف می‌کنیم. سپس از متد ()symmetric_difference برای ایجاد یک مجموعه جدید "s3" شامل عناصری که در "s1" یا "s2" هستند اما در هر دو نیستند استفاده می‌کنیم −

s1 = {1,2,3,4,5}
s2 = {4,5,6,7,8}
print ("s1: ", s1, "s2: ", s2)
s3 = s1.symmetric_difference(s2)
print ("s1 = s1^s2 ", s3)

خروجی زیر را تولید خواهد کرد −

s1: {1, 2, 3, 4, 5} s2: {4, 5, 6, 7, 8}
s1 = s1^s2 {1, 2, 3, 6, 7, 8}

پیشرفت مطالعه: وضعیت خوانده‌شدن این درس فقط در همین مرورگر ذخیره می‌شود؛ بدون نیاز به حساب کاربری.