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