اذهب إلى المحتوى

السؤال

نشر

أريد معرفة ما هيكل البيانات الأسرع، هل هي القوائم أم Sets؟ إذا افترضنا أن الترتيب غير مهم وسأبحث عن التكرارات في وقت لاحق، فهل Set أبطئ من القوائم في بايثون؟

Recommended Posts

  • 0
نشر

تعتمد الإجابة على سؤالك حول ما الذي تريد فعله بهذا الهيكل، فـ Set أسرع من القوائم في بعض الحالات مثلا إذا أردت التأكد من وجود كائن معين في set (عن طريق x in s مثلا)، ولكنها ستكون أبطئ من القوائم في حالات أخرى مثل الدوران حول العناصر عن طريق حلقة التكرار.
أمثلة حول سرعة الدوران:

>>> def iter_test(iterable):
...     for i in iterable:
...         pass
...
>>> from timeit import timeit
>>> timeit(
...     "iter_test(iterable)",
...     setup="from __main__ import iter_test; iterable = set(range(10000))",
...     number=100000)
12.666952133178711
>>> timeit(
...     "iter_test(iterable)",
...     setup="from __main__ import iter_test; iterable = list(range(10000))",
...     number=100000)
9.917098999023438
>>> timeit(
...     "iter_test(iterable)",
...     setup="from __main__ import iter_test; iterable = tuple(range(10000))",
...     number=100000)
9.865639209747314

أمثلة حول التأكد من وجود كائن:

>>> def in_test(iterable):
...     for i in range(1000):
...         if i in iterable:
...             pass
...
>>> timeit(
...     "in_test(iterable)",
...     setup="from __main__ import in_test; iterable = set(range(1000))",
...     number=10000)
0.5591847896575928
>>> timeit(
...     "in_test(iterable)",
...     setup="from __main__ import in_test; iterable = list(range(1000))",
...     number=10000)
50.18339991569519
>>> timeit(
...     "in_test(iterable)",
...     setup="from __main__ import in_test; iterable = tuple(range(1000))",
...     number=10000)
51.597304821014404

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...