ما هي الذات في بايثون: أمثلة من العالم الحقيقي
ما هي الذات في بايثون: أمثلة من العالم الحقيقي
في عالم برمجة Python ، ستواجه غالبًا هياكل بيانات مختلفة تخدم أغراضًا مختلفة. من بين هذه الهياكل والمجموعات والقوائم شائعة الاستخدام لتخزين ومعالجة مجموعات البيانات.
على الرغم من أنها قد تبدو متشابهة ، إلا أن هناك اختلافات ملحوظة في خصائصها وحالات استخدامها.
جدول المحتويات
فهم مجموعات وقوائم بايثون
حسنًا ، دعنا نشرح الأشياء أولاً.
ما هي مجموعات بايثون؟
مجموعة Python هي بنية بيانات مضمنة تمثل مجموعة غير مرتبة من العناصر المميزة ، تسمى الأعضاء.
هذه الأداة القوية مفيدة بشكل خاص في تطبيقات علوم البيانات والعمليات الرياضية.
تحتوي مجموعات Python على الخصائص التالية:
إنها غير مرتبة ، مما يعني أن العناصر في مجموعة مخزنة بشكل مستقل عن فهرسها. تدعم هذه المجموعة غير المرتبة من القيم الفريدة اختبارات العضوية الفعالة وتعيين الفهم.
لا تسمح بقيم مكررة. وهذا يجعلها مفيدة عندما تحتاج إلى العمل بقيم فريدة ، أو إزالة التكرارات من قائمة ، أو تنفيذ عمليات محددة مثل الاتحادات ، والتقاطعات ، والاختلافات المتماثلة.
هناك طريقتان لإنشاء مجموعة في بايثون:
باستخدام الأقواس المتعرجة ({}) ، والمعروفة أيضًا باسم الأقواس المتعرجة.
باستخدام وظيفة set () المضمنة ، والتي تأخذ وسيطة واحدة ، وهي وظيفة قابلة للتكرار تحتوي على العناصر التي تريد تضمينها في المجموعة.
بناء جملة عام لإنشاء مجموعة Python باستخدام الأقواس المتعرجة ووظيفة المجموعة المضمنة مذكورة أدناه:
my_set = {1, 2, 3}
another_set = set([4, 5, 6])
ما هي قوائم بايثون
قائمة Python هي بنية بيانات مضمنة تشبه المصفوفات الديناميكية في لغات البرمجة الأخرى.
يتم استخدامها لتخزين عناصر متعددة في متغير واحد ، مما يجعلها خيارًا متعدد الاستخدامات للتعامل مع أنواع البيانات المختلفة ، مثل السلاسل والأرقام والمنطقية.
تحتوي قوائم Python على الخصائص التالية:
يتم ترتيبها ، مما يعني أن عنصرًا معينًا له موقع فريد في القائمة ويمكن الوصول إليه من خلال فهرسه. تدعم هذه المجموعة المرتبة الوصول العشوائي ، مما يسمح لك بإجراء عمليات مثل التقطيع والتسلسل وفهم القائمة.
إنها قابلة للتغيير ، ويمكن تغيير عناصرها بعد إنشاء قائمة ، مما يوفر المرونة عند العمل مع هياكل البيانات.
تسمح قوائم Python بالقيم المكررة ويمكنها تخزين مزيج من أنواع البيانات ، بما في ذلك السلاسل والأرقام والمنطق المنطقي.
هناك طريقتان لإنشاء قائمة في بايثون:
باستخدام الأقواس المربعة التي تدل على حدود القائمة.
باستخدام وظيفة list () المضمنة ، والتي يمكن أن تأخذ وسيطة واحدة أو متكررة تحتوي على العناصر التي تريد تضمينها في القائمة.
يوضح كود Python التالي إنشاء قائمة Python باستخدام الأقواس المربعة ووظيفة list () المضمنة:
list1 = [1, 2, 3]
list2 = list([4, 5, 6])
3 الاختلافات الرئيسية بين المجموعات والقوائم
إنها اختلافات متعددة بين مجموعة Python والقائمة. بعض من أهمها مذكورة أدناه:
1. الترتيب والفهرسة
الترتيب والفهرسة في قائمة Python : يمكن أن تدعم قائمة Python الفهرسة ، مما يعني أنه يمكنك الوصول إلى عناصر في قائمة باستخدام موضعها في القائمة. يوفر هذا المرونة عند معالجة البيانات بترتيب معروف.
يوضح كود Python التالي ترتيب القوائم وفهرستها:
# Creating a Python list
my_list = [3, 5, 2, 8, 1]
# Accessing elements using their index
first_element = my_list[0] # This will be 3
third_element = my_list[2] # This will be 2
# Modifying elements using their index
my_list[1] = 7 # The list becomes [3, 7, 2, 8, 1]
# Iterating over a list maintaining the order
for item in my_list:
print(item)
مجموعات Python: مجموعة Python هي مجموعة غير مرتبة بدون فهرسة ، مما يعني أنه لا يمكنك الوصول إلى العناصر باستخدام مواضعها. يكون هذا مفيدًا عندما لا يكون ترتيب العناصر مهمًا.
يوضح كود Python التالي مجموعات الترتيب والفهرسة:
# Creating a Python set
my_set = {3, 5, 2, 8, 1}
# Sets are unordered, so you cannot access elements using their position
# This would raise an error: first_element = my_set[0]
# Modifying a set by adding or removing elements
my_set.add(6) # The set becomes {1, 2, 3, 5, 6, 8}
my_set.discard(5) # The set becomes {1, 2, 3, 6, 8}
# Iterating over a set (order is not guaranteed)
for item in my_set:
print(item)
2. التحوّل
قائمة بايثون: قائمة بايثون قابلة للتغيير ، مما يسمح لك بتعديل عناصرها. يمكنهم الاحتفاظ بأي نوع من الكائنات ، بما في ذلك القوائم المتداخلة ، وبالتالي توفير المزيد من المرونة فيما يتعلق بالمحتوى الذي يمكنهم تخزينه.
يوضح الكود التالي قابلية التغيير في قوائم بايثون:
# Creating a Python list
my_list = [3, 5, 2, 8, 1]
# Modifying the list by appending elements
my_list.append(4) # The list becomes [3, 5, 2, 8, 1, 4]
# Modifying the list by removing elements
my_list.remove(2) # The list becomes [3, 5, 8, 1, 4]
# Lists can hold any type of object, including nested lists
nested_list = [1, 2, [3, 4], 5]
مجموعة Python: تمامًا مثل القائمة في Python ، فإن مجموعة Python قابلة للتغيير أيضًا ويمكن تعديلها. ومع ذلك ، يمكن للمجموعات في Python أن تحتوي فقط على كائنات قابلة للتجزئة (غير قابلة للتغيير) ، مما يعني أنه لا يمكنك الحصول على مجموعة من المجموعات أو مجموعة تحتوي على كائنات قابلة للتغيير مثل القوائم.
يوضح الكود التالي قابلية التغيير لمجموعات بايثون:
# Creating a Python set
my_set = {3, 5, 2, 8, 1}
# Modifying the set by adding elements
my_set.add(6) # The set becomes {1, 2, 3, 5, 6, 8}
# Modifying the set by removing elements
my_set.discard(5) # The set becomes {1, 2, 3, 6, 8}
# Sets can only hold hashable (immutable) objects
valid_set = {1, 2, 3, 4, (5, 6)}
# The following would raise an error because lists are mutable and cannot be stored in sets
# invalid_set = {1, 2, [3, 4]}
تفرد العناصر
مجموعات Python: الميزة الرئيسية للمجموعات هي أنها تخزن فقط العناصر الفريدة. يتم تجاهل إضافة القيم المكررة إلى القائمة. هذا يجعل كائن المجموعة مثاليًا لعمليات المجموعة المختلفة ، مثل إزالة التكرارات أو التحقق من وجود عناصر فريدة.
# Creating a Python set with duplicate elements
my_set = {3, 5, 2, 8, 1, 3, 2, 5}
# The duplicate elements are automatically removed: {1, 2, 3, 5, 8}
# Checking for the presence of a unique element
if 5 in my_set:
print("5 is in the set")
# Output: 5 is in the set
# Removing duplicates from a list using a set
my_list = [3, 5, 2, 8, 1, 3, 2, 5]
unique_list = list(set(my_list))
# The unique_list becomes [1, 2, 3, 5, 8]
قوائم Python: تسمح القوائم بقيم مكررة وتحافظ على ترتيبها ، وهو ما يمكن أن يكون ضروريًا في حالات الاستخدام حيث تلعب التكرارات وترتيب العناصر دورًا مهمًا.
# Creating a Python list with duplicate elements
my_list = [3, 5, 2, 8, 1, 3, 2, 5]
# The list contains duplicate values: [3, 5, 2, 8, 1, 3, 2, 5]
# Checking for the presence of an element in a list
if 5 in my_list:
print("5 is in the list")
# Output: 5 is in the list
# Counting the occurrences of a value in a list
count_of_5 = my_list.count(5)
print("5 appears", count_of_5, "times")
# Output: 5 appears 2 times
3. العمليات المدعومة
هناك عمليات مختلفة يمكن للمرء أن يؤديها على مجموعات وقوائم ، كل منها مُحسَّن لمهام محددة:
قوائم Python: نظرًا لطبيعتها المرتبة والقائمة على الفهرس ، تدعم القوائم عمليات مثل التقطيع والتسلسل والتكرار وفهم القائمة. كما أنها توفر طرقًا مضمنة ، مثل append () و pop () و sort () ، والتي تسمح لك بمعالجة عناصر القائمة.
# Creating a Python list
my_list = [3, 5, 2, 8, 1]
# Slicing a list
sub_list = my_list[1:4] # The sub_list becomes [5, 2, 8]
# Concatenation of two lists
list1 = [1, 2, 3]
list2 = [4, 5, 6]
concatenated_list = list1 + list2 # The concatenated_list becomes [1, 2, 3, 4, 5, 6]
# Repetition of a list
repeated_list = list1 * 2 # The repeated_list becomes [1, 2, 3, 1, 2, 3]
# List comprehension
squared_list = [x ** 2 for x in my_list] # The squared_list becomes [9, 25, 4, 64, 1]
# Using built-in methods
my_list.append(4) # The list becomes [3, 5, 2, 8, 1, 4]
my_list.pop() # The list becomes [3, 5, 2, 8, 1]
my_list.sort() # The list becomes [1, 2, 3, 5, 8]
مجموعات Python: تم تحسين المجموعات لأداء العمليات المتعلقة بالمجموعة مثل الاتحاد والتقاطع والاختلاف والتحقق من العضوية باستخدام وظائف التجزئة للعثور على العناصر بسرعة. نظرًا لأنها غير مرتبة وتفتقر إلى الفهرسة ، تختلف عمليات المجموعة عن العمليات القائمة على القوائم.
# Creating Python sets
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
# Union operation
union_set = set1.union(set2) # The union_set becomes {1, 2, 3, 4, 5, 6, 7, 8}
# Intersection operation
intersection_set = set1.intersection(set2) # The intersection_set becomes {4, 5}
# Difference operation
difference_set = set1.difference(set2) # The difference_set becomes {1, 2, 3}
# Checking membership
if 3 in set1:
print("3 is a member of set1")
# Output: 3 is a member of set1
كيف تختار بنية البيانات الصحيحة؟
عند العمل باستخدام Python ، من الضروري تحديد بنية البيانات الأكثر ملاءمة لمهمتك المحددة. في هذا القسم ، سنناقش أفضل السيناريوهات لاستخدام المجموعات والقوائم ، جنبًا إلى جنب مع مزاياها الفريدة.
دعنا ندخله.
حالات الاستخدام للمجموعات
تقدم المجموعات العديد من المزايا التي تجعلها الاختيار الأمثل لمهام معينة:
التفرد: إذا كنت بحاجة إلى تخزين مجموعة من العناصر الفريدة ، فإن المجموعات هي السبيل للذهاب. تقوم المجموعات بإزالة التكرارات تلقائيًا ، مما يضمن تمييز كل عنصر في المجموعة.
اختبارات العضوية: توفر المجموعات اختبارات عضوية أسرع مقارنة بالقوائم. نظرًا لتطبيق جدول التجزئة الأساسي واستخدام وظائف التجزئة ، تسمح المجموعات بإجراء عمليات بحث عالية الكفاءة استنادًا إلى قيم التجزئة.
تعيين العمليات: تعيين عمليات الدعم مثل الاتحاد والتقاطع والاختلاف والاختلاف المتماثل التي يمكن أن تكون مفيدة في العديد من الخوارزميات ومهام معالجة البيانات وتطبيقات علوم البيانات.
حالات الاستخدام للقوائم
تعد القوائم أكثر ملاءمة للسيناريوهات التالية:
البيانات المرتبة: تحتفظ القوائم بترتيب العناصر ، مما يجعلها مناسبة للمهام التي تتطلب احترام تسلسل العناصر ، مثل معالجة البيانات بالترتيب الذي تم إنشاؤه فيه أو عند الحاجة إلى فهرسة الدعم.
البيانات القابلة للتغيير: القوائم قابلة للتغيير ، مما يسمح لك بإضافة عنصر معين أو إزالته أو تعديله حسب الحاجة. تجعل هذه المرونة القوائم مناسبة للمهام التي تتضمن تغيير محتوى المجموعة أو عند العمل باستخدام هياكل البيانات المتداخلة ، مثل قوائم القوائم أو القواميس.
العناصر غير الفريدة: على عكس المجموعات ، يمكن للقوائم تخزين عناصر مكررة ، مما يجعلها مناسبة للمواقف التي يكون فيها تكرار العناصر مهمًا ، مثل حساب التكرارات أو الحفاظ على ترتيب القيم المكررة.
تحقق من أدناه لتظهر لتعزيز التعلم الخاص بك.
مقارنة الأداء بين المجموعات والقوائم
في هذا القسم ، سنقارن أداء مجموعات وقوائم Python من حيث تعقيد الوقت واستخدام الذاكرة ، وهو أمر ضروري عند العمل مع هياكل البيانات الكبيرة أو عند تحسين الكود لتحقيق الكفاءة.
تعقيد الوقت
عندما يتعلق الأمر بتعقيد الوقت ، فإن المجموعات والقوائم لها نقاط قوة ونقاط ضعف مختلفة اعتمادًا على العمليات التي تقوم بها بسبب تنفيذها الأساسي.
البحث: تستخدم المجموعات عمليات بحث التجزئة ووظائف التجزئة ، مما يجعل البحث عن عنصر أسرع بشكل ملحوظ مقارنة بالقوائم. على سبيل المثال ، يستغرق البحث في 100000 عنصر 49.663 ثانية مع قائمة ، ولكن يستغرق 0.007 ثانية فقط مع مجموعة ، حيث يستفيد من قيمة التجزئة للوصول السريع.
التكرار: القوائم أسرع قليلاً من المجموعات عندما يتعلق الأمر بالتكرار فوق العناصر. وذلك لأن المجموعات تتطلب عمليات إضافية لضمان التفرد ، بينما تحتفظ القوائم بمجموعة بسيطة مرتبة مع فهرسة مباشرة.
استخدام الذاكرة
تستهلك المجموعات عادةً ذاكرة أكثر من القوائم لأنها تحتاج إلى الاحتفاظ بجدول تجزئة لضمان تفرد العناصر ، والذي يأتي على حساب زيادة استهلاك الذاكرة.
تقوم القوائم بتخزين العناصر بشكل تسلسلي فقط ، مما يؤدي إلى تقليل استهلاك الذاكرة ، مما يجعلها خيارًا أكثر كفاءة في استخدام الذاكرة عند التعامل مع مجموعات كبيرة من البيانات.
import time
import random
# Generating a large list and set with 100,000 random integers
large_list = [random.randint(1, 1_000_000) for _ in range(100_000)]
large_set = set(large_list)
# Searching for an item in the list and set
search_value = random.randint(1, 1_000_000)
# Measuring the time it takes to search for the item in the list
start_time = time.time()
result = search_value in large_list
end_time = time.time()
list_search_time = end_time - start_time
print(f"List search time: {list_search_time:.6f} seconds")
# Measuring the time it takes to search for the item in the set
start_time = time.time()
result = search_value in large_set
end_time = time.time()
set_search_time = end_time - start_time
print(f"Set search time: {set_search_time:.6f} seconds")
# Iterating over the list and set
# Measuring the time it takes to iterate over the list
start_time = time.time()
for item in large_list:
pass
end_time = time.time()
list_iter_time = end_time - start_time
print(f"List iteration time: {list_iter_time:.6f} seconds")
# Measuring the time it takes to iterate over the set
start_time = time.time()
for item in large_set:
pass
end_time = time.time()
set_iter_time = end_time - start_time
print(f"Set iteration time: {set_iter_time:.6f} seconds")
تعرض الكود المقدم مقارنة الأداء بين مجموعات وقوائم Python من حيث تعقيد الوقت للبحث والتكرار.
يقوم بإنشاء قائمة كبيرة ومجموعة من الأعداد الصحيحة العشوائية ، محاطة بأقواس متعرجة (تسمى أيضًا الأقواس المتعرجة).
ثم يقيس الوقت المستغرق للبحث عن عنصر معين ، باستخدام وسيطة واحدة في كل من القائمة والمجموعة ، ويقيس الوقت المستغرق للتكرار عبر جميع العناصر في القائمة والمجموعة.
يوضح الناتج اختلافات الأداء بين قوائم Python ومجموعات البحث والتكرار ، والتي تنبع من التنفيذ الأساسي.
تكون عملية البحث أسرع في مجموعات (0.000000 ثانية) منها في القوائم (0.002999 ثانية) بسبب استخدام وظائف التجزئة لحساب قيم التجزئة لعمليات البحث الفعالة. ومع ذلك ، فإن التكرار على قائمة (0.007995 ثانية) أسرع قليلاً من التكرار على مجموعة (0.017989 ثانية) لأن المجموعات تتطلب عمليات إضافية لضمان التفرد.
العمليات والأساليب الشائعة
تحتوي كلتا المجموعتين والقوائم في Python على عمليات وطرق مختلفة ، كل منها مُحسَّن لمهام محددة ومعالجة البيانات. بعض هذه الطرق مذكورة أدناه:
تعيين الطريقة
تقوم طرق المجموعة بتنفيذ عمليات مشابهة للعمليات الحسابية وهي أدوات قوية للتعامل مع القيم الفريدة في المجموعة.
add (element): إضافة عنصر إلى المجموعة إذا لم يكن موجودًا بالفعل.
إزالة (عنصر): يزيل العنصر المحدد من المجموعة ؛ يثير خطأ إذا لم يتم العثور على العنصر.
تجاهل (عنصر): يزيل العنصر المحدد من المجموعة إذا كان موجودًا. لا يظهر خطأ إذا لم يتم العثور على العنصر.
union (set2): يقوم بإرجاع مجموعة جديدة تحتوي على جميع العناصر من المجموعة الأصلية و set2 ، مما يؤدي بشكل فعال إلى إجراء عملية محددة.
intersection (set2): إرجاع مجموعة جديدة تحتوي على عناصر مشتركة لكل من المجموعة الأصلية والمجموعة 2.
الفرق (set2): إرجاع مجموعة جديدة تحتوي على عناصر في المجموعة الأصلية ولكن ليس في المجموعة 2.
symmetric_difference (set2): إرجاع مجموعة جديدة تحتوي على عناصر إما في المجموعة الأصلية أو المجموعة 2 ، ولكن ليس في كليهما.
طريقة القائمة
توفر أساليب القائمة طرقًا مختلفة لمعالجة البيانات.
إلحاق (عنصر): يضيف عنصرًا إلى نهاية القائمة.
extension (iterable): لإلحاق جميع العناصر من العنصر القابل للتكرار (على سبيل المثال ، قائمة أخرى) إلى نهاية القائمة.
إدراج (فهرس ، عنصر): إدراج عنصر في الفهرس المحدد.
إزالة (عنصر): يزيل التواجد الأول للعنصر المحدد في القائمة ؛ يثير خطأ إذا كان العنصر غير موجود.
pop (index): يزيل العنصر ويعيده إلى الفهرس المحدد. إذا لم يتم إعطاء فهرس ، فإنه يزيل العنصر الأخير.
index (element): إرجاع فهرس التواجد الأول للعنصر المحدد في القائمة.
count (element): إرجاع عدد تكرارات العنصر المحدد في القائمة.
Sort (): يفرز القائمة بترتيب تصاعدي افتراضيًا ؛ للترتيب التنازلي ، استخدم المعامل العكسي = صحيح.
عكس (): يعكس ترتيب العناصر في القائمة.
باستخدام طرق المجموعات والقوائم في Python ، يمكنك معالجة بياناتك بشكل فعال وحل المشكلات المختلفة في برمجة Python وعلوم البيانات والتطبيقات الأخرى.
قولنا النهائي
عند الاختيار بين قوائم ومجموعات Python لهيكل بياناتك ، ضع في اعتبارك استخدام القوائم عندما تحتاج إلى مجموعة مرتبة من العناصر ، وتريد الاحتفاظ بالعناصر المكررة ، وتتطلب القدرة على الوصول إلى العناصر عن طريق الفهرس.
اختر المجموعات عندما يكون تفرد العناصر أمرًا ضروريًا ، ولا يكون ترتيب العناصر مهمًا ، ويفضل اختبار العضوية الأسرع. بينما تتفوق القوائم في التكرار ، توفر المجموعات فحوصات احتواء أكثر كفاءة.
يعتمد اختيارك في النهاية على متطلبات مشروعك ، حيث تقدم كل بنية بيانات مجموعتها الخاصة من المزايا والقيود ، مما يجعلها أدوات قوية لمعالجة المهام المختلفة في برمجة Python. يتمتع!
ما هي الذات في بايثون: أمثلة من العالم الحقيقي
ستتعلم كيفية حفظ وتحميل الكائنات من ملف .rds في R. ستغطي هذه المدونة أيضًا كيفية استيراد الكائنات من R إلى LuckyTemplates.
في هذا البرنامج التعليمي للغة ترميز DAX ، تعرف على كيفية استخدام وظيفة الإنشاء وكيفية تغيير عنوان القياس ديناميكيًا.
سيغطي هذا البرنامج التعليمي كيفية استخدام تقنية Multi Threaded Dynamic Visuals لإنشاء رؤى من تصورات البيانات الديناميكية في تقاريرك.
في هذه المقالة ، سأقوم بتشغيل سياق عامل التصفية. يعد سياق عامل التصفية أحد الموضوعات الرئيسية التي يجب على أي مستخدم LuckyTemplates التعرف عليها في البداية.
أريد أن أوضح كيف يمكن لخدمة تطبيقات LuckyTemplates عبر الإنترنت أن تساعد في إدارة التقارير والرؤى المختلفة التي تم إنشاؤها من مصادر مختلفة.
تعرف على كيفية إجراء تغييرات في هامش الربح باستخدام تقنيات مثل قياس التفرع والجمع بين صيغ DAX في LuckyTemplates.
سيناقش هذا البرنامج التعليمي أفكار تجسيد مخازن البيانات وكيفية تأثيرها على أداء DAX في توفير النتائج.
إذا كنت لا تزال تستخدم Excel حتى الآن ، فهذا هو أفضل وقت لبدء استخدام LuckyTemplates لاحتياجات إعداد تقارير الأعمال الخاصة بك.
ما هي بوابة LuckyTemplates؟ كل شيئ ترغب بمعرفته