পাইথনে অক্ষরগুলিকে বর্ণমালা অনুসারে বাছাই করা যায়


157

পাইথনে অক্ষরগুলিকে বর্ণমালা অনুসারে বাছাই করার কী সহজ উপায় আছে?

অনেক দূরে:

a = 'ZENOVW'

আমি ফিরে আসতে চাই:

'ENOVWZ'

উত্তর:


276

আপনি করতে পারেন:

>>> a = 'ZENOVW'
>>> ''.join(sorted(a))
'ENOVWZ'

নোট করুন যে sorted(a)একটি সাজানো তালিকা ফিরিয়ে দেবে, সুতরাং স্ট্রিং তুলনাগুলির জন্য আপনার প্রয়োজন নেই join()(নীচে জিজ্ঞাসাবাদ উত্তরগুলির দেখুন)।
স্কিপি লে গ্র্যান্ড গৌরও

নোট যে ''.join(sorted(a, reverse=True, key=str.lower))একটি বিপরীত কেস সংবেদনশীল বাছাই করতে ব্যবহার করা যেতে পারে। সহজ হতে পারে।
সুপারডুপারেরো

89
>>> a = 'ZENOVW'
>>> b = sorted(a)
>>> print b
['E', 'N', 'O', 'V', 'W', 'Z']

sortedএকটি তালিকা ফেরত দেয়, যাতে আপনি এটি ব্যবহার করে আবার স্ট্রিং তৈরি করতে পারেন join:

>>> c = ''.join(b)

যা প্রতিটি আইটেমের মধ্যে bফাঁকা স্ট্রিংয়ের সাথে একসাথে আইটেমগুলিতে যোগদান করে ''

>>> print c
'ENOVWZ'

31

সাজানো () সমাধান আপনাকে অন্যান্য স্ট্রিং সহ কিছু অপ্রত্যাশিত ফলাফল দিতে পারে।

অন্যান্য সমাধানের তালিকা:

চিঠিগুলি বাছাই করুন এবং সেগুলি আলাদা করুন:

>>> s = "Bubble Bobble"
>>> ''.join(sorted(set(s.lower())))
' belou'

অক্ষর বাছাই করুন এবং ক্যাপগুলি রাখার সময় এগুলিকে আলাদা করুন:

>>> s = "Bubble Bobble"
>>> ''.join(sorted(set(s)))
' Bbelou'

চিঠিগুলি বাছাই করুন এবং নকলগুলি রাখুন:

>>> s = "Bubble Bobble"
>>> ''.join(sorted(s))
' BBbbbbeellou'

আপনি যদি ফলাফলের স্থান থেকে মুক্তি পেতে চান তবে উল্লিখিত ক্ষেত্রে যে কোনও একটিতে ফালা () ফাংশন যুক্ত করুন:

>>> s = "Bubble Bobble"
>>> ''.join(sorted(set(s.lower()))).strip()
'belou'

আরে, প্রথম সমাধানটি হোমওয়ার্কের এক টুকরোটির জন্য দারুণভাবে কার্যকর ছিল যাতে আমাকে দ্বিখণ্ডিত ব্যবহার করে একটি চিঠি খুঁজে পেতে হয়েছিল। হ্যাঁ, আমি স্ট্রিং ক্লাস এবং ফাইন্ড () পদ্ধতি সম্পর্কে ইতিমধ্যে জানি, তবে এটি অনুশীলনের উদ্দেশ্যকে পরাস্ত করে;)
রানলেভেল

9

আপনি হ্রাস ব্যবহার করতে পারেন

>>> a = 'ZENOVW'
>>> reduce(lambda x,y: x+y, sorted(a))
'ENOVWZ'

7

পাইথন ফাংশন sortedস্ট্রিংয়ের জন্য ASCII ভিত্তিক ফলাফল প্রদান করে।

ভুল : নীচের উদাহরণে, eএবং dপিছনে Hএবং এর Wকারণে এটি ASCII মান।

>>>a = "Hello World!"
>>>"".join(sorted(a))
' !!HWdellloor'

সঠিক : অর্ডার সাজানো স্ট্রিং লিখতে ছাড়া চিঠির ক্ষেত্রে পরিবর্তন। কোডটি ব্যবহার করুন:

>>> a = "Hello World!"
>>> "".join(sorted(a,key=lambda x:x.lower()))
' !deHllloorW'

আপনি যদি সমস্ত বিরামচিহ্ন এবং সংখ্যাগুলি মুছতে চান। কোডটি ব্যবহার করুন:

>>> a = "Hello World!"
>>> "".join(filter(lambda x:x.isalpha(), sorted(a,key=lambda x:x.lower())))
'deHllloorW'

3

কোডটি পাইথনের কোনও ইনবিল্ট ফাংশন ব্যবহার না করে বর্ণানুক্রমিকভাবে স্ট্রিং সাজানোর জন্য ব্যবহার করা যেতে পারে

k = ইনপুট ("আবার কোনও স্ট্রিং লিখুন")

li = []
x = len(k)
for i in range (0,x):
    li.append(k[i])

print("List is : ",li)


for i in range(0,x):
    for j in range(0,x):
        if li[i]<li[j]:
            temp = li[i]
            li[i]=li[j]
            li[j]=temp
j=""

for i in range(0,x):
    j = j+li[i]

print("After sorting String is : ",j)

1
আদর্শভাবে আপনি কোডটিতে কিছু ব্যাখ্যা যুক্ত করতে চান এটি কী করে তা স্পষ্ট করতে। তাই আপনাকে স্বাগতম!
geisterfurz007

1

হ্রাস () ফাংশনটির সাথে উত্তরটি সত্যিই পছন্দ করেছে। জমা () ব্যবহার করে স্ট্রিংটিকে সাজানোর জন্য এখানে আরও একটি উপায়।

from itertools import accumulate
s = 'mississippi'
print(tuple(accumulate(sorted(s)))[-1])

সাজানো (গুলি) -> ['আমি', 'আই', 'আই', 'আই', 'এম', 'পি', 'পি', 'এস', 'এস', 'এস', 'এস' ]

টিপল (জমা (সাজানো (গুলি)) -> ('আই', 'আইআই', 'আইআইআইআই', 'আইআইআইআইআই', 'আইআইআইআইএম', 'আইআইআইইএমপি', 'আইআইআইইএমপ্প', 'আইআইআইআইএমপিএস', 'আইআইআইআইএমপিএস', 'আইআইআইআইএমপিএস) ',' iiiimppssss ')

আমরা টিপলের শেষ সূচক (-1) নির্বাচন করছি


আপনার প্রথম উত্তরের জন্য ভাল হয়েছে। কেবলমাত্র 1 মিলিয়ন অক্ষরের একটি স্ট্রিং বিবেচনা করুন, আপনার টুপল () কমান্ডটি জমে থাকা বিকল্পগুলির একটি বিশাল তালিকা তৈরি করবে যা অযথা বড় পরিমাণে মেমরি ব্যবহার করে।
tda

একমত। সুতরাং, স্থান জটিলতা উন্নত করার জন্য, ধারণাটি এটি পুনরায় ডেটা স্ট্রাকচারে রূপান্তরিত করার জন্য পুনরাবৃত্তের সাথে কাজ করে। খুশী হলাম। ধন্যবাদ.
মনো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.