समस्या विवरण
नेस्टेड सूची (सूची की सूची) दी गई है, उस सब-सूची को खोजें जिसकी लंबाई सबसे अधिक है, और उसकी लंबाई प्रिंट करें।
इनपुट
listA = [[1,2], [2,45,6,7], [11,65,2]]
आउटपुट
Longest List and its length: ([2, 45, 6, 7], 4)
विधि 1: lambda और map के साथ max()
def longest(lst):
longest_list = max(lst, key=lambda i: len(i))
max_length = max(map(len, lst))
return longest_list, max_length
listA = [[1,2], [2,45,6,7], [11,65,2]]
print("Longest List and its length:\n", longest(listA))
विधि 2: len और max (लूप)
def longest(lst):
max_length = max(len(x) for x in lst)
longest_list = []
for sublist in lst:
if len(sublist) == max_length:
longest_list = sublist
break # पहली मिली हुई
return longest_list, max_length
विधि 3: map() फ़ंक्शन
def longest(lst):
max_length = max(map(len, lst))
longest_list = next(sublist for sublist in lst if len(sublist) == max_length)
return longest_list, max_length
आउटपुट (सभी)
Longest List and its length: ([2, 45, 6, 7], 4)
तुलना
| विधि | पठनीयता | दक्षता | नोट |
|---|---|---|---|
| lambda + max | उच्च | O(n) | सबसे पायथनिक |
| जनरेटर + max | उच्च | O(n) | मेमोरी कुशल |
| map + max | मध्यम | O(n) | फंक्शनल शैली |
| लूप | कम | O(n) | शुरुआती के लिए स्पष्ट |
नोट: यदि एक से अधिक सब-सूचियों की समान अधिकतम लंबाई हो, तो max() पहली वाली लौटाता है। सभी चाहिए तो लिस्ट कॉम्प्रिहेंशन उपयोग करें: [s for s in lst if len(s) == max_len]।