2016-11-18 15 views
6

में अधिकतम संख्या को खोजने के लिए मैंकैसे एक 2d अजगर सूची

my_list = [2,4,6,[5,10,3]] 

मैं अधिकतम संख्या कैसे मिल सकता है के रूप में अजगर में एक सूची है (अर्थात कार्यक्रम 10 के रूप में अधिकतम लौटना चाहिए)?

धन्यवाद

उत्तर

3

अपनी सूची फ़्लैट करें, और तो आप max() builtin समारोह का उपयोग कर सकते:

l = [2,4,6,[5,10,3]] 


def flatten(seq): 
    for el in seq: 
    if isinstance(el, list): 
     yield from flatten(el) 
    else: 
     yield el 

print(max(flatten(l))) # 10 
+0

धन्यवाद! :) @leaf – jasmine

1

छोटी/बेहतर लेकिन एक तरह से हो सकता है:

my_list = [2,4,6,[5,10,3]] 
print(max(max(x) if isinstance(x, list) else x for x in my_list)) 
+0

आप में से केवल एक ही स्तर समर्थन करना चाहते हैं flattening, आप 'अधिकतम (अधिकतम) का उपयोग कर सकते हैं यदि isinstance (x, list) x में x के लिए x) ', जो आपकी अभिव्यक्ति से आसान होगा। –

+0

ओह हाँ। क्या इसे संपादित करने के लिए उचित अभ्यास होगा? –

+0

हां, ज़ाहिर है। :) –

1

खोजने के लिए अधिकतम मूल्य, दो बार पुनरावृत्त करने से मुझे अतिरिक्त ओवरहेड दिखता है। सबसे पहले, सूची को फ़्लैटन करने के लिए और फिर अधिकतम मान खोजने के लिए। यहाँ उदाहरण के रूप में एक एकल पुनरावृत्ति में आप नेस्टेड सूची का अधिकतम मान देने के लिए एक पुनरावर्ती समारोह बनाने के लिए है:

# The good thing is, you need not to worry about the level of depth 
# of the nested list, you can use it on any level of nested list 

def get_max(my_list): 
    m = None 
    for item in my_list: 
     if isinstance(item, list): 
      item = get_max(item) 
     if not m or m < item: 
      m = item 
    return m 

नमूना रन:

>>> my_list = [2,4,6,[5,10,3]] 
>>> get_max(my_list) 
10 
+2

धन्यवाद @ moinuddin – jasmine

संबंधित मुद्दे