उदाहरण:
इनपुट: lst = [1, 5, 3, 7, 9] K = 12 आउटपुट: < / मजबूत> [(5, 7), (3, 9)] इनपुट: lst = [2, 1, 5, 7, -1, 4] K = 6 आउटपुट: < / मजबूत> [(2, 4), (1, 5), (7, -1)]
विधि # 1: पाइथोनिक नाइव
यह उपरोक्त समस्या के लिए एक भोला दृष्टिकोण है। सबसे पहले, हम एक खाली सूची लेते हैं ' रेस ' और पूर्णांकों की दी गई सूची के प्रत्येक तत्व के माध्यम से लूप और लूप प्रारंभ करें। प्रत्येक पुनरावृत्ति पर, तत्व निकालें, इसे "संख्या" में संग्रहीत करें, योग के लिए शेष अंतर खोजें और जांचें कि दी गई सूची में कोई अंतर है या नहीं।
# Python3 प्रोग्राम
में सभी जोड़ियों को खोजने के लिए # दी गई राशि के साथ पूर्णांकों की सूची
<कोड वर्ग = "कीवर्ड"> def <कोड वर्ग = "सादा"> findPairs (lst, K):
<कोड वर्ग = "सादा" > रेस <कोड क्लास = "कीवर्ड"> = <कोड क्लास = "सादा"> []
<कोड क्लास = "कीवर्ड"> जबकि < /कोड> <कोड वर्ग = "सादा"> पहली:
कोड वर्ग = "सादा"> संख्या <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> lst.pop ()
<कोड क्लास एसएस = "सादा"> भिन्न <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> के <कोड वर्ग = "कीवर्ड"> - <कोड वर्ग = "सादा"> संख्या
<कोड वर्ग = "कीवर्ड"> यदि <कोड वर्ग = "सादा"> भिन्न lst:
res.append ((diff, num) )
res.reverse ()
<कोड वर्ग = "अपरिभाषित रिक्त स्थान" > <कोड वर्ग = "कीवर्ड"> वापसी <कोड वर्ग = "सादा"> रेस
p><कोड वर्ग = "अपरिभाषित रिक्त स्थान"><कोड वर्ग = "टिप्पणियाँ"> # चालक कोड
/ कोड> <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> [ <कोड वर्ग = "मान"> 1 <कोड वर्ग = "सादा"> , <कोड वर्ग = "मान"> 5 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 3 <कोड वर्ग = "सादा" ">, <कोड वर्ग = "मान"> 7 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 9 <कोड वर्ग = "सादा">]
<कोड वर्ग = "सादा"> K <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "मान"> 12 p>
Print
(findPairs (lst, K))
< b> बाहर निकलें:
[(5, 7) , (3, 9)]
विधि # 2: का उपयोग करना collections.Counter
यह तरीका उसी तरीके का अनुसरण करता है जिस पर संग्रह.काउंटर
का उपयोग करके ऊपर चर्चा की गई थी।
# Python3 प्रोग्राम
में सभी जोड़ियों को खोजने के लिए # दी गई राशि के साथ पूर्णांकों की सूची
से <कोड वर्ग = "सादा"> संग्रह <कोड वर्ग = "कीवर्ड"> आयात <कोड वर्ग = "pl ऐन"> काउंटर
def
findPairs (lst, K):
res
=
[]
<कोड वर्ग = "सादा"> गिनती <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> काउंटर (lst)
<कोड वर्ग = "कीवर्ड"> के लिए <कोड वर्ग = "सादा" > x <कोड वर्ग = "कीवर्ड"> में <कोड वर्ग = "सादा"> lst:
<कोड वर्ग = "सादा"> y < / कोड> <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> के <कोड वर्ग = "कीवर्ड"> - <कोड वर्ग = "सादा"> x
if
(x! <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> y <कोड वर्ग = "कीवर्ड"> और <कोड वर्ग = "सादा" > गिनती [y])
या
(x
=
<कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> वाई <कोड वर्ग = "कीवर्ड"> और <कोड वर्ग = "सादा"> गिनती [y ] > 1
):
<कोड वर्ग = "सादा"> res.append ((x, y))
<कोड वर्ग = "सादा" > गिनती घटाना ((x, y) )
<कोड वर्ग = "अपरिभाषित रिक्त स्थान" > <कोड वर्ग = "कीवर्ड"> वापसी <कोड वर्ग = "सादा"> res
<कोड वर्ग = "अपरिभाषित रिक्त स्थान">
<कोड वर्ग = "टिप्पणियाँ"> # चालक कोड
< कोड वर्ग = "सादा"> पहली <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> [ <कोड वर्ग = "मान"> 1 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 5 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 3 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 7 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान" > 9 <कोड वर्ग = "सादा">]
<कोड वर्ग = "सादा"> कश्मीर <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "मान"> 12
कोड ई वर्ग = "कार्य"> प्रिंट <कोड वर्ग = "सादा"> (ढूंढें जोड़े (lst, K) ))
बाहर निकलें:
[ (5, 7), (3, 9)]
विधि # 3: itertools.combinations
(बेवकूफ विधि)
यह itertools.combinations
का उपयोग करने का एक सरल तरीका है। हम प्रत्येक संयोजन के माध्यम से जाने के लिए लूप का उपयोग करते हैं और जो हम चाहते हैं उसे ढूंढते हैं।
<तालिका सीमा = "0" सेलपैडिंग = "0 "सेलस्पेसिंग =" 0 "> < tr>
# Python3 प्रोग्राम
में सभी जोड़ियों को खोजने के लिए # एक के साथ पूर्णांकों की सूची दी गई राशि
से
itertools
आयात <कोड वर्ग = "सादा"> संयोजन
<कोड वर्ग = "कीवर्ड"> def <कोड वर्ग = "सादा"> खोजपेयर (lst, K):
res
=
[]
<कोड वर्ग = "कीवर्ड"> के लिए <कोड वर्ग = "सादा"> वर <कोड वर्ग = "कीवर्ड"> <में /code> <कोड वर्ग = "सादा"> संयोजन (lst, 2
):
<कोड वर्ग = "कीवर्ड"> यदि <कोड वर्ग =" सादा "> var [ 0
]
+
var [
<कोड वर्ग = "मान"> 1 <कोड वर्ग = "सादा">] <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> के:
<कोड वर्ग = "सादा"> res.append ((var [ <कोड वर्ग = "मान"> 0 <कोड वर्ग = "सादा">], वर [ <कोड वर्ग = "मान"> 1 <कोड वर्ग = "सादा">]))
return
res
# ड्राइवर कोड
एलएसटी <कोड क्लास = "कीवर्ड"> = <कोड क्लास = "सादा"> [ <कोड क्लास एसएस = "वैल्यू"> 1 <कोड क्लास = " सादा">, <कोड वर्ग = "मान"> 5 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 3 <कोड वर्ग = "सादा"> , <कोड वर्ग = "मान"> 7 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 9 <कोड वर्ग = "सादा" ">]
<कोड वर्ग = "सादा"> K <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "मान"> 12
Print
(findPairs (lst, K))
बाहर निकलें:
[(5, 7), (3, 9)]
विधि # 4: itertools.combinations
(प्रभावी विधि)
# Python3 प्रोग्राम
# एक दिए गए योग के साथ पूर्णांकों की सूची
<कोड क्लास = "कीवर्ड"> रिटर्न <कोड वर्ग = "सादा"> [जोड़ी <कोड वर्ग = "कीवर्ड"> के लिए <कोड वर्ग = "सादा"> जोड़ी <कोड वर्ग = "कीवर्ड"> में <कोड वर्ग = "सादा"> संयोजन (lst, <कोड वर्ग = "मान"> 2 <कोड वर्ग = "सादा">) <कोड वर्ग = "कीवर्ड"> यदि <कोड वर्ग = "कार्य"> योग <कोड वर्ग = "सादा"> (जोड़ी) <कोड वर्ग = "कीवर्ड"> = <कोड क्लास = "कीवर्ड"> = <कोड क्लास = "प्लेन"> के] से p>
def
findPairs (lst, K):
<कोड क्लास = "टिप्पणियां"> # ड्राइवर कोड
lst
=
[
< कोड वर्ग = "मान"> 1 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 5 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 3 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 7 <कोड वर्ग = "सादा">, < /कोड> <कोड वर्ग = "मान"> 9 <कोड वर्ग = "सादा">]
<कोड वर्ग = "पीएलए in"> K =
12
Print
(findPairs (lst, K))
बाहर निकलें:
[(5, 7), (3, 9)]