পাইথনের সবচেয়ে কার্যকরী উপায় তালিকার দীর্ঘতম স্ট্রিং বেছে নেওয়া?


254

আমার পরিবর্তনশীল দৈর্ঘ্যের একটি তালিকা রয়েছে এবং বর্তমানে তালিকাভুক্ত তালিকার আইটেমটি তালিকায় থাকা দীর্ঘতম স্ট্রিং কিনা তা পরীক্ষা করার উপায় খুঁজতে চেষ্টা করছি। এবং আমি পাইথন ২.6.১ ব্যবহার করছি

উদাহরণ স্বরূপ:

mylist = ['abc','abcdef','abcd']

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

অবশ্যই একটি সরল তালিকা উপলব্ধি আছে যা সংক্ষিপ্ত এবং মার্জিত যে আমি উপেক্ষা করছি?

উত্তর:


619

থেকে পাইথন ডকুমেন্টেশন খোদ আপনি ব্যবহার করতে পারেন max:

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

1
পাইথন ২.৪ এর জন্য কাজ করবে না। কোডটি ২.৪ এর অধীনে প্রয়োগের জন্য এই পোস্ট এবং এই পোস্টটি দেখুন ।
কুম্বা

13
এটি কেবল প্রথম দীর্ঘতম স্ট্রিংটি দেয়: উদাহরণস্বরূপ, সমস্ত দীর্ঘতম স্ট্রিংয়ের পরিবর্তে print(max(["this", "does", "work"], key=len))কেবল ফিরে আসে "this"
অ্যান্ডারসন সবুজ

ডিট্টো @ অ্যান্ডারসন গ্রিন কলটি (কী) সমানভাবে মিলিত তালিকার দু'টি উপাদানকে ক্যাপচার করে পদ্ধতিটি কীভাবে পুনর্বার নিয়োগ করা যায়?
ডেভিড

আমার প্রশ্নটি আগে থেকেই অনুসরণ করে, আমি একটি প্রতিক্রিয়া যুক্ত করেছি যা প্রথম আইটেম-যদি-অল-অল-সমতুল্য সমস্যাটির প্রতিকার করে ...
ডেভিড শেকড

4
প্রত্যেক বৃহত্তম উপাদান পেতে, রৈখিক সময়, আপনাকে যা করতে হবে m=max(map(len,xs)); [x for x in xs if len(x) == m]। আমি মনে করি না এটি এক লাইনে সুন্দরভাবে করা যায়।
থমাস আহলে

6

যদি 1 টিরও বেশি দীর্ঘতম স্ট্রিং থাকে ('12' এবং '01' ভাবেন) তবে কী হবে?

দীর্ঘতম উপাদান পেতে চেষ্টা করুন Try

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

এবং তারপর নিয়মিত foreach

for st in mylist:
    if len(st)==max_length:...

5
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)

4

তালিকার সবচেয়ে ছোট বা বৃহত্তম আইটেমটি পেতে বিল্ট-ইন মিনিট এবং সর্বাধিক ফাংশনগুলি ব্যবহার করুন:

lo = min(L)
hi = max(L)

বাছাইয়ের মতো, আপনি "কী" যুক্তিটি পাস করতে পারেন যা তালিকার আইটেমগুলির তুলনা করার আগে ম্যাপ করার জন্য ব্যবহৃত হয়:

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

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

দেখে মনে হচ্ছে আপনি সর্বাধিক ফাংশনটি স্ট্রিংয়ের জন্য সঠিকভাবে ম্যাপ করে তুলনা হিসাবে ব্যবহার করতে পারেন। আমি অবশ্যই অবশ্যই একবার সর্বাধিক সন্ধান করার পরামর্শ দেব, তালিকার প্রতিটি উপাদানগুলির জন্য নয়।


2

len(each) == max(len(x) for x in myList) বা শুধু each == max(myList, key=len)


4
আপনি একটি সংক্ষিপ্ত বিবরণ প্রদান করতে পারেন?
ডেভিড শেকড

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.