खोज…


वाक्य - विन्यास

  • 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}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow