চেক আউট collections.deque
। ডক্স থেকে:
ডিউকগুলি থ্রেড-সেফ সমর্থন করে, মেমরি এফিসিটি দক্ষ সংযুক্ত করে এবং উভয় দিকের প্রায় একই হে (1) কর্মক্ষমতা সহ ডেকের উভয় দিক থেকে পপ করে।
তালিকার অবজেক্টগুলি অনুরূপ অপারেশনগুলিকে সমর্থন করে তবে তারা দ্রুত নির্ধারিত দৈর্ঘ্যের ক্রিয়াকলাপগুলির জন্য অনুকূলিত হয় এবং পপ (0) এবং সন্নিবেশ (0, v) ক্রিয়াকলাপগুলির জন্য ও (এন) মেমরি চলন ব্যয়কে অন্তর্ভুক্ত করে যা অন্তর্নিহিত তথ্য উপস্থাপনের আকার এবং অবস্থান উভয়ই পরিবর্তন করে ।
ঠিক যেমনটি বলা হয়েছে, পপ (0) বা সন্নিবেশ (0, ভি) ব্যবহার করে তালিকার অবজেক্টগুলির সাথে বড় জরিমানা আদায় করতে হবে। আপনি একটিতে স্লাইস / সূচক ক্রিয়াকলাপগুলি ব্যবহার করতে পারবেন না deque
, তবে আপনি popleft
/ ব্যবহার করতে পারেন appendleft
যা অপারেশনগুলির deque
জন্য অনুকূলিত। এটি প্রদর্শনের জন্য এখানে একটি সাধারণ মানদণ্ড দেওয়া হল:
import time
from collections import deque
num = 100000
def append(c):
for i in range(num):
c.append(i)
def appendleft(c):
if isinstance(c, deque):
for i in range(num):
c.appendleft(i)
else:
for i in range(num):
c.insert(0, i)
def pop(c):
for i in range(num):
c.pop()
def popleft(c):
if isinstance(c, deque):
for i in range(num):
c.popleft()
else:
for i in range(num):
c.pop(0)
for container in [deque, list]:
for operation in [append, appendleft, pop, popleft]:
c = container(range(num))
start = time.time()
operation(c)
elapsed = time.time() - start
print "Completed %s/%s in %.2f seconds: %.1f ops/sec" % (container.__name__, operation.__name__, elapsed, num / elapsed)
আমার মেশিনে ফলাফল:
Completed deque/append in 0.02 seconds: 5582877.2 ops/sec
Completed deque/appendleft in 0.02 seconds: 6406549.7 ops/sec
Completed deque/pop in 0.01 seconds: 7146417.7 ops/sec
Completed deque/popleft in 0.01 seconds: 7271174.0 ops/sec
Completed list/append in 0.01 seconds: 6761407.6 ops/sec
Completed list/appendleft in 16.55 seconds: 6042.7 ops/sec
Completed list/pop in 0.02 seconds: 4394057.9 ops/sec
Completed list/popleft in 3.23 seconds: 30983.3 ops/sec
.append()
এবং.pop()
ও (1) রূপান্তরিত হয়েছে (পুনর্নির্মাণ এবং অনুলিপিটি ঘটে তবে খুব কমই এবং কেবলমাত্র সর্বাধিক আকারে পৌঁছানো পর্যন্ত স্ট্যাকটি হবে কখনও আছে)।