मैं एक सूची का पहला मान वापस करने का प्रयास कर रहा हूं जो किसी अन्य सूची के तत्व से बड़ा है। उदाहरण के लिए नीचे दी गई सूची A और B को लें,

A = [2, 4, 6, 8, 10, 12]
B = [5, 7, 9, 11]

B[0] = 5 के लिए, मैं चाहता हूं कि यह सूची A का पहला तत्व लौटाए जो 5 से बड़ा है। इस मामले में, लौटाया गया मान A[2] = 6 है। फिर इसे बी के सभी तत्वों के लिए दोहराएं।

अपेक्षित अंतिम परिणाम एक सूची होगी C = [6, 8, 10, 12]

मैंने 2 पुनरावृत्तियों के बारे में सोचा, i और j लेकिन किसी कारण से जिसे मैं समझ नहीं पा रहा हूं, नीचे दिए गए कोड में j पुनरावृत्ति नहीं कर रहा है।

A = [2, 4, 6, 8, 10, 12]
B = [5, 7, 9, 11]

j=0
for i in range(len(B)):
    while B[i] < A[j]:
        j+=1
    else:
        print(A[j])

मुझे जो परिणाम मिल रहा है वह है:

2
2
2
2

क्या कोई देखता है कि त्रुटि कहां है?

0
Rafael Castelo Branco 19 अगस्त 2019, 12:53

4 जवाब

सबसे बढ़िया उत्तर

दो छोरों का प्रयोग करें, B के प्रत्येक तत्व i के लिए A का पहला तत्व j ढूंढें जो कि i से बड़ा है और यदि पाया जाता है तो लूप को तोड़ दें और B में अगले तत्व पर जाएं। ये कोशिश करें :

A = [2, 4, 6, 8, 10, 12]
B = [5, 7, 9, 11]
C = []
for i in B:
    for j in A:
        if j>i:
            C.append(j)
            break

आउटपुट :

[6, 8, 10, 12]  
1
Arkistarvh Kltzuonstev 19 अगस्त 2019, 13:01
A = [2, 4, 6, 8, 10, 12]
B = [5, 7, 9, 11]
for y in B:
    for x in A:
        if x>y:
            print(x)
            break 

उत्पादन

6
8
10
12
1
ComplicatedPhenomenon 19 अगस्त 2019, 13:36

आपको दो छोरों की आवश्यकता है क्योंकि आप B के प्रत्येक तत्व की तुलना A के प्रत्येक तत्व से करना चाहते हैं

    for element in B:
        for number in A:
            if number > element:
                print(number)

आउटपुट: [6, 8, 10, 12, 8, 10, 12, 10, 12, 12]

0
ItsMeTheBee 19 अगस्त 2019, 13:00

सूची समझ का उपयोग करके:

C = [j for i in B for j in A if j > i]

नतीजा:

[6, 8, 10, 12, 8, 10, 12, 10, 12, 12]

मूल रूप से, हमें प्रत्येक तत्व के माध्यम से पुनरावृति करने की आवश्यकता है। मेरा कोड B से शुरू होता है, फिर समाप्त होने तक प्रत्येक A के लिए जाता है। फिर वही चक्र फिर से होता है। प्रत्येक पुनरावृत्ति के लिए, कोड जाँचता है कि A[j] > B[i] या नहीं; यदि यह अधिक है, तो मान को C सूची में रखें।

एक पुनरावृत्ति के लिए

C = [i for i in A if i > B[0]]
# [6, 8, 10, 12]
0
N. Arunoprayoch 19 अगस्त 2019, 13:08