समस्या: मैं दो सूचियों जो tuples (टाइम स्टैंप और एक कतार-लंबाई के प्रत्येक मिलकर) जो मर्ज करने की आवश्यकता शामिल है:timestamps और कतार के साथ tuples की दो सूचियां मर्ज लंबाई
L1 = [[0, 50], [7.75, 120], [10.25, 70], [17, 100], [20, 60]]
L2 = [[0, 80], [8, 120], [10, 85], [10.25, 80]]
मैं एक समारोह merge(L1,L2)
कि रिटर्न की जरूरत है:
[[ 0.00, 50+80 ],
[ 7.75, 120+80 ],
[ 8.00, 120+120],
[10.00, 85+120],
[10.25, 70+80 ],
[17.00, 100+80 ],
[20.00, 60+80 ]] # note
[ध्यान दें: मैं की जरूरत नहीं है 60+80
- यह केवल संकेत मिलता है जो मूल्यों फिर से जोड़ रहे हैं है
- (अलग टाइम स्टाम्प्स के मर्ज किए गए सूची में से सबसे छोटा मान
V
पॉपिंग setwise संघ:60+80
=140
की sult मैं क्या जरूरत है]क्या मैं ऊपर उत्पादन से निकालने कि मैं बार-बार कर रहा हूँ है
timestamps
)। V
से कम या बराबर टाइमस्टैम्प की गैर-V
सूची से कतार-लंबाई जोड़ना।- ...
V
तक समाप्त हो गया है।
मेरे समस्या: मैं बहुत यकीन है कि heapq इसे हल कर सकते हैं, लेकिन कैसे समाधान heapq मॉड्यूल का उपयोग कर की संरचना करने के लिए चारों ओर मेरे सिर नहीं मिल सकता हूँ।
अधिक प्रक्रिया के पर्यटन विवरण:
- पहले चरण में - 0.00 पर और 7.75 तक यौगिक कतार की लंबाई
50+80
है - सेL1[0][0] == L2[0][0]
- लिया मैं मान
L1[0][1]+L2[0][1] = 50+80
जोड़ सकते हैं। अब मैंनेL1[0][:]
औरL2[0][:]
- दूसरे चरण में - 7.75 पर - एल 2 की कतार बढ़ रही नहीं है, लेकिन एल 1 की कतार में है:
L1[1][0] = 120
। इसलिए120+80
प्राप्त करने के लिएL2[0][1]
के साथL1[1][1]
जोड़ने के लिए यौगिक कतार लंबाई प्राप्त करने की आवश्यकता है। - मैंने अब पहले दर्ज किए गए पहले मान का बड़ा उपयोग किया है और जब तक अंतराल समाप्त हो गया है (23.99 के बाद) अगले चरणों के लिए ऐसा करना चाहिए। "समय" के सेट में अगला सबसे बड़ा मान
L2[1][0]
है जो 8.00 है। - जैसा कि 8.00 775 से बड़ा है, मुझे इन मानों को मर्ज करने की आवश्यकता है ताकि 8.00 पर कतार की लंबाई 120 + 120 है जो एल 1 के सबसे बड़े मूल्य पर आधारित है जो 8.00 से कम है - जो 7.75 है। इस प्रकार मैं एल 1 1 और एल 2 1 जोड़ता हूं।
- अगले चरण में सबसे बड़ा अप्रयुक्त मूल्य एल 2 से 10.00 है।
L2
से कतार लंबाईL1
के साथ सबसे बड़ी मान के साथ विलय करने की आवश्यकता है, जो 10.00 से कम या उसके बराबर है ... - और इसलिए यह जारी है ...जिस क्रम में वे होती हैं, और, पिछले आपरेशन (
last_time
) के समय स्टाम्प रखने में घटनाओं से अधिक
वर्क्स के रूप में उम्मीद :-) – Wolf
सुंदर जवाब धनुष \ 0 / – The6thSense