2009-05-16 14 views
149

मेरे पास परिवर्तनीय लंबाई की एक सूची है और परीक्षण करने के लिए एक तरीका खोजने का प्रयास कर रहा हूं, यदि सूची आइटम वर्तमान में मूल्यांकन किया जा रहा है, तो सूची में निहित सबसे लंबी स्ट्रिंग है। और मैं अजगर 2.6.1सूची में सबसे लंबी स्ट्रिंग चुनने के लिए पायथन का सबसे प्रभावी तरीका है?

उपयोग कर रहा हूँ उदाहरण के लिए:

mylist = ['123','123456','1234'] 

for each in mylist: 
    if condition1: 
     do_something() 
    elif ___________________: #else if each is the longest string contained in mylist: 
     do_something_else() 

मैं ब्रांड अजगर करने के लिए नया हूँ और मुझे यकीन है कि मैं सिर्फ एक मस्तिष्क गोज़ आ रही हूँ। निश्चित रूप से एक साधारण सूची समझ है कि मैं छोटा और सुरुचिपूर्ण हूं जिसे मैं देख रहा हूं?

धन्यवाद!

उत्तर

392
Python documentation खुद से

, आप max उपयोग कर सकते हैं:

>>> mylist = ['123','123456','1234'] 
>>> print max(mylist, key=len) 
123456 
+4

धन्यवाद y कहां बहुत – user104997

+60

बिल्कुल सुंदर। –

+0

प्रसन्न, वास्तव में अच्छा। –

1

len(each) == max(len(x) for x in myList) या सिर्फ each == max(myList, key=len)

+1

क्या आप एक संक्षिप्त विवरण प्रदान कर सकते हैं? –

1

एक सूची में सबसे छोटी या सबसे बड़ा आइटम प्राप्त करने के लिए, निर्मित मिनट और का उपयोग अधिकतम कार्य:

lo = min(L) 
hi = max(L) As with sort (see below), you can pass in a key function 

तुलना के रूप में आप अधिकतम समारोह इस्तेमाल कर सकते हैं यदि आप इसे स्ट्रिंग्स के लिए सही ढंग से नक्शा और का उपयोग इस तरह

lo = min(L, key=int) 
hi = max(L, key=int) 

http://effbot.org/zone/python-list.htm

लग रहा है: सूची आइटम को मैप करने के प्रयोग किया जाता है इससे पहले कि वे तुलना की जाती है। मैं निश्चित रूप से सूची में प्रत्येक तत्व के लिए निश्चित रूप से अधिकतम एक बार खोजने की सिफारिश करता हूं।

4

यदि 1 से अधिक लंबी स्ट्रिंग (सोच '12', और '01') हो तो क्या होना चाहिए?

प्रयास करें कि सबसे लंबे समय तक तत्व

max_length,longest_element = max([(len(x),x) for x in ('a','b','aa')]) 

और फिर नियमित रूप से प्राप्त करने के लिए foreach

for st in mylist: 
    if len(st)==max_length:... 
0
def LongestEntry(lstName): 
    totalEntries = len(lstName) 
    currentEntry = 0 
    longestLength = 0 
    while currentEntry < totalEntries: 
    thisEntry = len(str(lstName[currentEntry])) 
    if int(thisEntry) > int(longestLength): 
     longestLength = thisEntry 
     longestEntry = currentEntry 
    currentEntry += 1 
    return longestLength 
1
def longestWord(some_list): 
    count = 0 #You set the count to 0 
    for i in some_list: # Go through the whole list 
     if len(i) > count: #Checking for the longest word(string) 
      count = len(i) 
      word = i 
    return ("the longest string is " + word) 

या बहुत आसान:

max(some_list , key = len) 
संबंधित मुद्दे

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