আজিজ আল্টোর রিপোর্ট অনুসারে filter(None, lstr)
কোনও স্থানের সাথে খালি স্ট্রিংগুলি মুছে ফেলা হয় না ' '
তবে আপনি যদি নিশ্চিত হন যে lrc কেবলমাত্র স্ট্রিং ব্যবহার করতে পারেন তবে আপনি ব্যবহার করতে পারেনfilter(str.strip, lstr)
>>> lstr = ['hello', '', ' ', 'world', ' ']
>>> lstr
['hello', '', ' ', 'world', ' ']
>>> ' '.join(lstr).split()
['hello', 'world']
>>> filter(str.strip, lstr)
['hello', 'world']
আমার পিসির সাথে সময়ের তুলনা করুন
>>> from timeit import timeit
>>> timeit('" ".join(lstr).split()', "lstr=['hello', '', ' ', 'world', ' ']", number=10000000)
3.356455087661743
>>> timeit('filter(str.strip, lstr)', "lstr=['hello', '', ' ', 'world', ' ']", number=10000000)
5.276503801345825
মুছে ফেলার জন্য দ্রুততম সমাধান ''
এবং একটি স্পেস দিয়ে খালি স্ট্রিং ' '
দেহাবশেষ ' '.join(lstr).split()
।
একটি মন্তব্যে হিসাবে রিপোর্ট করা হয়েছে যদি আপনার স্ট্রিংয়ের মধ্যে ফাঁকা স্থান থাকে তবে পরিস্থিতি আলাদা।
>>> lstr = ['hello', '', ' ', 'world', ' ', 'see you']
>>> lstr
['hello', '', ' ', 'world', ' ', 'see you']
>>> ' '.join(lstr).split()
['hello', 'world', 'see', 'you']
>>> filter(str.strip, lstr)
['hello', 'world', 'see you']
আপনি দেখতে পাচ্ছেন যে filter(str.strip, lstr)
এটির ফাঁকা স্থান দিয়ে স্ট্রিংগুলি সংরক্ষণ করুন তবে ' '.join(lstr).split()
এই স্ট্রিংগুলিকে বিভক্ত করবেন।
for x in list
আপনি যদি ব্যবহার করেনwhile loop
তবে তা ঠিক আছে। প্রদর্শিত লুপটি খালি স্ট্রিংগুলি সরিয়ে ফেলবে যতক্ষণ না খালি আরও বেশি স্ট্রিং থাকে এবং তারপরে বন্ধ না হয়। আমি আসলে প্রশ্নটির দিকেও নজর রাখিনি (কেবল শিরোনাম) তবে আমি ঠিক একই লুপটি দিয়ে একটি সম্ভাবনা হিসাবে উত্তর দিয়েছি! আপনি যদি মেমরির স্বার্থে বোধগম্য বা ফিল্টার ব্যবহার করতে না চান তবে এটি একটি অত্যন্ত অজগর সমাধান।