Python में शब्दों (स्ट्रिंग्स) की सूची से सबसे लंबे शब्द की लंबाई निकालना। max() फ़ंक्शन के साथ key=len सबसे सरल तरीका है।
उदाहरण
my_list = ["ab", "abc", "abcd", "abcde"]
print("मूल सूची:", my_list)
# विधि 1: max() + key=len (सबसे सरल, पायथनिक)
max_length = len(max(my_list, key=len))
print(f"सबसे लंबे शब्द की लंबाई: {max_length}") # 5
# सबसे लंबा शब्द भी प्राप्त करें
longest_word = max(my_list, key=len)
print(f"सबसे लंबा शब्द: '{longest_word}'") # abcde
# विधि 2: लूप (मूल लेख का दृष्टिकोण)
def find_longest_length(my_list):
if not my_list:
return 0
max_length = len(my_list[0])
for element in my_list:
if len(element) > max_length:
max_length = len(element)
return max_length
print(f"लूप से: {find_longest_length(my_list)}")
# विधि 3: map() + max()
lengths = list(map(len, my_list))
print(f"map+max: {max(lengths)}")
# विधि 4: जनरेटर एक्सप्रेशन
print(f"जनरेटर: {max(len(w) for w in my_list)}")
आउटपुट
मूल सूची: ['ab', 'abc', 'abcd', 'abcde']
सबसे लंबे शब्द की लंबाई: 5
सबसे लंबा शब्द: 'abcde'
लूप से: 5
map+max: 5
जनरेटर: 5
किनारे के मामले
def safe_longest_length(words):
"""सुरक्षित संस्करण: खाली सूची, गैर-स्ट्रिंग हैंडलिंग"""
if not words:
return 0, None
# केवल स्ट्रिंग्स पर विचार करें
str_words = [w for w in words if isinstance(w, str)]
if not str_words:
return 0, None
longest = max(str_words, key=len)
return len(longest), longest
# टेस्ट केस
test_cases = [
["ab", "abc", "abcd", "abcde"],
[],
[1, 2, 3], # गैर-स्ट्रिंग
["a", 123, "abc", None], # मिश्रित
["", "a", "ab"], # खाली स्ट्रिंग
["same", "same", "same"], # समान लंबाई
]
for case in test_cases:
length, word = safe_longest_length(case)
print(f"{case} → लंबाई: {length}, शब्द: '{word}'")
आउटपुट
['ab', 'abc', 'abcd', 'abcde'] → लंबाई: 5, शब्द: 'abcde'
[] → लंबाई: 0, शब्द: None
[1, 2, 3] → लंबाई: 0, शब्द: None
['a', 123, 'abc', None] → लंबाई: 3, शब्द: 'abc'
['', 'a', 'ab'] → लंबाई: 2, शब्द: 'ab'
['same', 'same', 'same'] → लंबाई: 4, शब्द: 'same'
सभी सबसे लंबे शब्द प्राप्त करना (टाई होने पर)
def get_all_longest(words):
"""सभी सबसे लंबे शब्द लौटाएं"""
if not words:
return []
str_words = [w for w in words if isinstance(w, str)]
if not str_words:
return []
max_len = max(len(w) for w in str_words)
return [w for w in str_words if len(w) == max_len]
print(get_all_longest(["cat", "dog", "elephant", "hippo", "ant"])) # ['elephant']
print(get_all_longest(["cat", "dog", "bird", "fish"])) # ['bird', 'fish'] (दोनों 4)
Pandas Series में उपयोग
import pandas as pd
s = pd.Series(["ab", "abc", "abcd", "abcde", None, 123])
print("Series:\n", s)
# स्ट्रिंग्स पर फोकस
str_series = s.dropna().astype(str)
max_len = str_series.str.len().max()
longest_words = str_series[str_series.str.len() == max_len]
print(f"\nअधिकतम लंबाई: {max_len}")
print(f"सबसे लंबे शब्द:\n{longest_words}")
आउटपुट
Series:
0 ab
1 abc
2 abcd
3 abcde
4 None
5 123
dtype: object
अधिकतम लंबाई: 5
सबसे लंबे शब्द:
3 abcde
dtype: object
सारांश
| विधि | कोड | नोट |
|---|---|---|
| max + key=len | max(words, key=len) | सबसे पायथनिक, शब्द भी देता है |
| max + map(len) | max(map(len, words)) | केवल लंबाई चाहिए तो |
| जनरेटर | max(len(w) for w in words) | मेमोरी कुशल |
| लूप | मैन्युअल | शैक्षिक, नियंत्रण अधिक |
| Pandas str.len() | s.str.len().max() | Series के लिए |