मैं इसके भीतर सबसे अधिक तत्वों के साथ उप सरणी की अनुक्रमणिका प्राप्त करने के लिए सबसे कुशल विधि की तलाश में हूं। उदाहरण के लिए :

array = [[a,b,c],[a,b],[a,b,c,d,e,f]]

मुझे जो उत्तर मिलना चाहिए वह 2 होगा।

प्रत्येक ब्लॉक की जांच के लिए लूप प्रक्रिया के लिए लंबी प्रक्रिया का उपयोग किए बिना मैं इसका सूचकांक कैसे प्राप्त कर सकता हूं? नम्पी के उपयोग के बिना भी।

1
Lotus 5 अक्टूबर 2018, 16:25

3 जवाब

हम array को len से क्रमबद्ध करने के लिए lamba का उपयोग कर सकते हैं और फिर अंतिम आइटम की अनुक्रमणिका लें

x = array.index(sorted(array, key=len)[-1])
# 2
1
vash_the_stampede 5 अक्टूबर 2018, 13:40

यदि आप सिस्टैक्स को सरल रखना चाहते हैं,

>>> array = [[a,b,c],[a,b],[a,b,c,d,e,f]]
>>> array.index(max(array, key=len))
2
1
RottenCandy 5 अक्टूबर 2018, 13:36

थोड़ा गोल चक्कर, लेकिन काम करता है:

>>> a = [[1, 2, 3], [2, 3], [4, 5, 6, 7, 8]]
>>> max(enumerate(a), key=lambda (_, el): len(el))
(2, [4, 5, 6, 7, 8])

यह तत्व और उसकी अनुक्रमणिका दोनों देता है। मैं इसे पाठक के लिए एक अभ्यास के रूप में छोड़ दूंगा ताकि यह पता लगाया जा सके कि इसे केवल सूचकांक तक कैसे कम किया जाए।

यदि आपको केवल तत्व की आवश्यकता है, तो चीजें बहुत आसान हैं:

>>> max(a, key=len)
[4, 5, 6, 7, 8]
1
NPE 5 अक्टूबर 2018, 13:29