Python Language
देके मॉड्यूल
खोज…
वाक्य - विन्यास
- dq = deque () # एक खाली deque बनाता है
- dq = deque (iterable) # कुछ तत्वों के साथ एक deque बनाता है
- dq.append (ऑब्जेक्ट) # deque के दाईं ओर ऑब्जेक्ट जोड़ता है
- dq.appendleft (ऑब्जेक्ट) # ऑब्जेक्ट को deque के बाईं ओर जोड़ता है
- dq.pop () -> ऑब्जेक्ट # निकालता है और सही सबसे अधिक ऑब्जेक्ट लौटाता है
- dq.popleft () -> ऑब्जेक्ट # हटाए गए और सबसे अधिक ऑब्जेक्ट को लौटाता है
- dq.extend (iterable) # कुछ तत्वों को deque के दाईं ओर जोड़ता है
- dq.extendleft (iterable) # कुछ तत्वों को deque के बाईं ओर जोड़ता है
पैरामीटर
पैरामीटर | विवरण |
---|---|
iterable | अन्य पुनरावृत्तियों से कॉपी किए गए प्रारंभिक तत्वों के साथ छल बनाता है। |
maxlen | सीमा कितनी बड़ी हो सकती है, पुराने तत्वों को बाहर निकालते हुए नए को जोड़ा जाता है। |
टिप्पणियों
यह वर्ग तब उपयोगी होता है जब आपको एक सूची के समान एक वस्तु की आवश्यकता होती है जो दोनों ओर से तेज परिशिष्ट और पॉप संचालन की अनुमति देता है (नाम deque
" डबल-एंडेड कतार " के लिए खड़ा है)।
उपलब्ध कराए गए तरीके वास्तव में बहुत समान हैं, सिवाय इसके कि कुछ pop
, append
या extend
जैसे left
प्रत्यय हो सकते हैं। deque
डेटा संरचना एक सूची में प्राथमिकता दी जानी चाहिए अगर एक की जरूरत है अक्सर दोनों सिरों पर डाल सकते हैं और नष्ट तत्वों है क्योंकि यह लगातार समय हे (1) में ऐसा करने की अनुमति देता है।
बेसिक deque का उपयोग करना
इस वर्ग के साथ जो मुख्य विधियाँ उपयोगी हैं, popleft
हैं popleft
और appendleft
from collections import deque
d = deque([1, 2, 3])
p = d.popleft() # p = 1, d = deque([2, 3])
d.appendleft(5) # d = deque([5, 2, 3])
सीमा आकार आकार
maxlen
के आकार को सीमित करने के लिए एक deque बनाते समय maxlen
पैरामीटर का उपयोग करें:
from collections import deque
d = deque(maxlen=3) # only holds 3 items
d.append(1) # deque([1])
d.append(2) # deque([1, 2])
d.append(3) # deque([1, 2, 3])
d.append(4) # deque([2, 3, 4]) (1 is removed because its maxlen is 3)
उपलब्ध विधियाँ
खाली हिरण बनाना:
dl = deque() # deque([]) creating empty deque
कुछ तत्वों के साथ छल बनाना:
dl = deque([1, 2, 3, 4]) # deque([1, 2, 3, 4])
जोड़ने के लिए तत्व deque:
dl.append(5) # deque([1, 2, 3, 4, 5])
तत्वों को जोड़ना बायाँ भाग:
dl.appendleft(0) # deque([0, 1, 2, 3, 4, 5])
Deque में तत्वों की सूची जोड़ना:
dl.extend([6, 7]) # deque([0, 1, 2, 3, 4, 5, 6, 7])
बाईं ओर से तत्वों की सूची जोड़ना:
dl.extendleft([-2, -1]) # deque([-1, -2, 0, 1, 2, 3, 4, 5, 6, 7])
.pop()
तत्व का प्रयोग स्वाभाविक रूप से दाईं ओर से एक आइटम को हटा देगा:
dl.pop() # 7 => deque([-1, -2, 0, 1, 2, 3, 4, 5, 6])
.popleft()
एलिमेंट को लेफ्ट साइड से आइटम हटाने के लिए प्रयोग करना:
dl.popleft() # -1 deque([-2, 0, 1, 2, 3, 4, 5, 6])
इसके मान से तत्व निकालें:
dl.remove(1) # deque([-2, 0, 2, 3, 4, 5, 6])
तत्वों के क्रम को उल्टा करें:
dl.reverse() # deque([6, 5, 4, 3, 2, 0, -2])
पहले चौड़ाई खोजो
Deque एकमात्र क्यूथ डेटा संरचना है जिसमें तेज कतार संचालन है । (नोट queue.Queue
आमतौर पर उपयुक्त नहीं है, क्योंकि यह थ्रेड्स के बीच संचार के लिए है।) एक क्यू का मूल उपयोग मामला चौड़ाई पहली खोज है ।
from collections import deque
def bfs(graph, root):
distances = {}
distances[root] = 0
q = deque([root])
while q:
# The oldest seen (but not yet visited) node will be the left most one.
current = q.popleft()
for neighbor in graph[current]:
if neighbor not in distances:
distances[neighbor] = distances[current] + 1
# When we see a new node, we add it to the right side of the queue.
q.append(neighbor)
return distances
कहें कि हमारे पास एक सरल निर्देशित ग्राफ है:
graph = {1:[2,3], 2:[4], 3:[4,5], 4:[3,5], 5:[]}
अब हम कुछ शुरुआती स्थिति से दूरी पा सकते हैं:
>>> bfs(graph, 1)
{1: 0, 2: 1, 3: 1, 4: 2, 5: 2}
>>> bfs(graph, 3)
{3: 0, 4: 1, 5: 1}