TheBrain نشر 19 يناير 2016 أريد معرفة ما هيكل البيانات الأسرع، هل هي القوائم أم Sets؟ إذا افترضنا أن الترتيب غير مهم وسأبحث عن التكرارات في وقت لاحق، فهل Set أبطئ من القوائم في بايثون؟ انشر على الشّبكات الاجتماعية رابط هذه المساهمة
0 هشام رزق الله نشر 19 يناير 2016 تعتمد الإجابة على سؤالك حول ما الذي تريد فعله بهذا الهيكل، فـ 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 انشر على الشّبكات الاجتماعية رابط هذه المساهمة
أريد معرفة ما هيكل البيانات الأسرع، هل هي القوائم أم Sets؟ إذا افترضنا أن الترتيب غير مهم وسأبحث عن التكرارات في وقت لاحق، فهل Set أبطئ من القوائم في بايثون؟
انشر على الشّبكات الاجتماعية
رابط هذه المساهمة