केवल एक लूप का उपयोग करके सूची से अधिकतम और दूसरी अधिकतम संख्या खोजने के लिए एक पायथन कोड लिखें

सूची में दूसरी सबसे बड़ी संख्या खोजने के लिए पायथन कार्यक्रम

संख्याओं की सूची - सूची की लंबाई कम से कम 2 . होनी चाहिए

list1 = [10, 20, 4, 45, 99] 

max=max(list1[0],list1[1]) 
secondmax=min(list1[0],list1[1]) 

for i in range(2,len(list1)): 
   if list1[i]>max: 
      secondmax=max
      max=list1[i] 
   else: 
      if list1[i]>secondmax: 
         secondmax=list1[i] 

print("Second highest number is : ",str(secondmax)) 
1
Tapas 6 अगस्त 2019, 23:01
1
आपको विशेष रूप से क्या मदद चाहिए?
 – 
Carcigenicate
6 अगस्त 2019, 23:02

4 जवाब

आप इसे for लूप के बिना भी कर सकते हैं max() को सूची में दो बार कॉल करके - और पहली कॉल के परिणाम को हटा दें:

list1 = [10, 20, 4, 45, 99]
list1.remove(max(list1))
print(max(list1))

लेकिन यह आपके दृष्टिकोण में केवल for लूप का उपयोग करने से धीमा होने जा रहा है, क्योंकि इसे दो बार सूची को पार करना है।

0
Green Cloak Guy 6 अगस्त 2019, 23:17

अगर मैं आपका उत्तर समझ गया तो आप इस कोड को आजमा सकते हैं (ऋणात्मक संख्या भी):

list1 = [99, 20, 4, 10, 45] 

if len(list1) < 2:
    raise Exception ("List size must be >= 2")

first_max=list1[0]
second_max=list1[-1]

#I used the position to avoid the same number(index) for the first and second max
position_first_max=0
position_second_max=len(list1)-1

for idx,item in enumerate(list1):
    if item>first_max:
        second_max=first_max
        position_second_max=position_first_max
        first_max=item
        position_first_max=idx
    else:
        if item>second_max and position_first_max!=idx:
            second_max=item
            position_second_max=idx

print("First highest number is : ",str(first_max))
print("Second highest number is : ",str(second_max))

मैंने अलग-अलग पदों और कार्यों में अलग-अलग नंबरों के साथ परीक्षण किया।

उम्मीद है ये मदद करेगा।

0
Ferdinando 7 अगस्त 2019, 00:59

बिना सॉर्ट या अतिरिक्त डेटा संरचनाओं के एक लूप:

def find_two_max(lst : list):
    if len(lst) < 2:
        raise Exception ("List size must be >= 2")

    max1=max2=float('-inf')

    for number in lst:
        if number >= max1:
            max2=max1
            max1=number
        elif number > max2:
            max2=number
    return max1, max2

l=[99, 299, 0, 2,3,4,5,1000]
print("The highest two numbers are %s , %s " % find_two_max(l))```
0
Cryptoharf84 15 अगस्त 2019, 22:16

एक सरल उपाय सूची में sort() में अंतर्निहित पायथन फ़ंक्शन का उपयोग करना है। सूची को छाँटने के बाद, आप सूचकांक का उपयोग करके दूसरे से अंतिम आइटम को निकाल सकते हैं:

list1 = [10, 20, 4, 45, 99]

list1.sort()
print( 'Highest number is : ', list1[-1] )
print( 'Second highest number is : ', list1[-2] )
-1
Jason K Lai 6 अगस्त 2019, 23:24