পাইথনে তালিকা আইটেমগুলির একটি সেট কীভাবে তৈরি করবেন?


170

listপাইথনে আমার বেশ কয়েকটি ফাইলের নাম রয়েছে এবং আমি setসমস্ত ফাইলের একটির বাইরে ফাইল তৈরি করতে চাই।

filelist=[]
for filename in filelist:
    set(filename)

এটি কাজ করে বলে মনে হয় না। এটি কিভাবে করতে পারে?

উত্তর:


322

আপনার যদি হ্যাশেবল অবজেক্টের একটি তালিকা থাকে (ফাইলের নামগুলি সম্ভবত স্ট্রিংগুলি হতে পারে, সুতরাং তাদের গণনা করা উচিত):

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পদ্ধতিটি বেশ কার্যকর।


1
আমি ২.7 ব্যবহার করছি এবং এটি কাজ করে না বলে মনে হচ্ছে। এখানে কি হচ্ছে? পাইথন ২.7.১৩ (ডিফল্ট, জুলাই 24 2017, 14:22:59) [জিসিসি 4.2.1 সামঞ্জস্যপূর্ণ অ্যাপল এলএলভিএম 8.1.0 (ঝনঝন -802.0.42)] ডারউইন "সহায়তা", "কপিরাইট", "ক্রেডিট" টাইপ করুন বা আরও তথ্যের জন্য "লাইসেন্স"। >>> x = [1,2,3] >>> সেট (এক্স) সেট ([1, 2, 3]) >>>
opus111

@ ব্যবহারকারী1902291 - দেখে মনে হচ্ছে এটি কার্যকর হয়েছে, ফলস্বরূপ সেটটির উপর নজর রাখতে আপনি স্নিগ্ধ: y = set(x)
মিলিওসেলন

এছাড়াও নোট করুন যে তালিকা থেকে সেটটিতে আইটেম যুক্ত করা যখন আপনি তালিকা থেকে নকলকে ফিল্টার করতে চান তখন খুব কার্যকর হতে পারে।
প্রাণজাল কুমার

12

সর্বাধিক প্রত্যক্ষ সমাধান হ'ল:

 s = set(filelist)

আপনার মূল কোডে সমস্যাটি হল এই যে মান নির্ধারিত হচ্ছে না হয়েছে সেট । আপনার কোডটির স্থির সংস্করণটি এখানে:

 s = set()
 for filename in filelist:
     s.add(filename)
 print(s)

9

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

my_set = set(my_list)

বা, পাইথন 3 এর জন্য,

my_set = {*my_list}

একটি তালিকা থেকে একটি সেট তৈরি করতে। বিপরীতে, আপনি করতে পারেন

my_list = list(my_set)

বা, পাইথন 3 এর জন্য,

my_list = [*my_set]

একটি সেট থেকে একটি তালিকা তৈরি করতে।

কেবলমাত্র লক্ষ করুন যে একটি তালিকা অন্তর্নিহিতভাবে আনর্ডারড না হওয়ায় তালিকাটিকে কোনও সেটে রূপান্তর করার সময় তালিকার উপাদানগুলির ক্রম সাধারণত হারিয়ে যায়। (সিপিথনের একটি ব্যতিক্রম, যদিও মনে হয় তালিকায় কেবল অ-নেতিবাচক পূর্ণসংখ্যার সমন্বয়ে গঠিত হয়েছে, তবে আমি ধরে নিই এটি সিপিথনে সেটগুলি বাস্তবায়নের একটি পরিণতি এবং এই পাইথনটি বিভিন্ন পাইথন বাস্তবায়নের মধ্যে পৃথক হতে পারে))


4

এখানে আরও একটি সমাধান:

>>>list1=["C:\\","D:\\","E:\\","C:\\"]
>>>set1=set(list1)
>>>set1
set(['E:\\', 'D:\\', 'C:\\'])

এই কোডটিতে আমি সেট পদ্ধতিটিকে একটি সেটে পরিণত করার জন্য ব্যবহার করেছি এবং তারপরে এটি তালিকা থেকে সমস্ত সদৃশ মান সরিয়ে ফেলেছে


1

পুনরাবৃত্ত উপায়ে সেট তৈরির একটি সাধারণ উপায়:

aset = {e for e in alist}

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