listপাইথনে আমার বেশ কয়েকটি ফাইলের নাম রয়েছে এবং আমি setসমস্ত ফাইলের একটির বাইরে ফাইল তৈরি করতে চাই।
filelist=[]
for filename in filelist:
set(filename)
এটি কাজ করে বলে মনে হয় না। এটি কিভাবে করতে পারে?
listপাইথনে আমার বেশ কয়েকটি ফাইলের নাম রয়েছে এবং আমি setসমস্ত ফাইলের একটির বাইরে ফাইল তৈরি করতে চাই।
filelist=[]
for filename in filelist:
set(filename)
এটি কাজ করে বলে মনে হয় না। এটি কিভাবে করতে পারে?
উত্তর:
আপনার যদি হ্যাশেবল অবজেক্টের একটি তালিকা থাকে (ফাইলের নামগুলি সম্ভবত স্ট্রিংগুলি হতে পারে, সুতরাং তাদের গণনা করা উচিত):
lst = ['foo.py', 'bar.py', 'baz.py', 'qux.py', Ellipsis]
আপনি সরাসরি সেটটি নির্মাণ করতে পারেন:
s = set(lst)
আসলে, কোনও পুনরাবৃত্ত বস্তুset দিয়ে এইভাবে কাজ করবে ! (হাঁসের টাইপিং কি দুর্দান্ত নয়?)
যদি আপনি এটি পুনরাবৃত্তি করতে চান:
s = set()
for item in iterable:
s.add(item)
তবে এইভাবে এটি করার খুব কমই দরকার আছে। আমি কেবল এটি উল্লেখ করেছি কারণ set.addপদ্ধতিটি বেশ কার্যকর।
y = set(x)
সর্বাধিক প্রত্যক্ষ সমাধান হ'ল:
s = set(filelist)
আপনার মূল কোডে সমস্যাটি হল এই যে মান নির্ধারিত হচ্ছে না হয়েছে সেট । আপনার কোডটির স্থির সংস্করণটি এখানে:
s = set()
for filename in filelist:
s.add(filename)
print(s)
আপনি করতে পারেন
my_set = set(my_list)
বা, পাইথন 3 এর জন্য,
my_set = {*my_list}
একটি তালিকা থেকে একটি সেট তৈরি করতে। বিপরীতে, আপনি করতে পারেন
my_list = list(my_set)
বা, পাইথন 3 এর জন্য,
my_list = [*my_set]
একটি সেট থেকে একটি তালিকা তৈরি করতে।
কেবলমাত্র লক্ষ করুন যে একটি তালিকা অন্তর্নিহিতভাবে আনর্ডারড না হওয়ায় তালিকাটিকে কোনও সেটে রূপান্তর করার সময় তালিকার উপাদানগুলির ক্রম সাধারণত হারিয়ে যায়। (সিপিথনের একটি ব্যতিক্রম, যদিও মনে হয় তালিকায় কেবল অ-নেতিবাচক পূর্ণসংখ্যার সমন্বয়ে গঠিত হয়েছে, তবে আমি ধরে নিই এটি সিপিথনে সেটগুলি বাস্তবায়নের একটি পরিণতি এবং এই পাইথনটি বিভিন্ন পাইথন বাস্তবায়নের মধ্যে পৃথক হতে পারে))