খালি সেট আক্ষরিক?


460

[] = খালি list

() = খালি tuple

{} = খালি dict

একটি খালি জন্য অনুরূপ স্বরলিপি আছে set? নাকি আমার লিখতে হবে set()?


12
আপনি আমার জন্য []} আমি গ্রহণ করি না, তাই না?
utdemir

3
পাইথন দিয়ে প্রায় কিছু সম্ভব দেখাতে চাই। আপনি যদি সেট () ব্যবহার না করেই কোনও সেট তৈরি করতে চান তবে আপনি পারেন।
utdemir

6
হ্যাঁ, আপনি একশত অভিযুক্ত উপায়ে বেশ কিছু করতে পারেন। আমি map(lambda x: x)আমার কোড উদাহরণগুলিতে যুক্ত করি না কেবল এটি দেখায় যে এটি কাজ করে। এটি পাশাপাশি কোনও সেটও আক্ষরিক নয়, এটি কেবল একটি সেট বোঝা।

130
একটি বোবা উপায় যা কাজ করে {0}-{0}। এটি এর মতো পরিষ্কার নয় set(), তবে এটি চোখের মজার জোড়ার মতো দেখার সুবিধা রয়েছে।
wim

10
@ ক্রিস {}একটি অভিধান। {0}একটি সেট। {0} - {0}একটি সেট এবং নিজের মধ্যে পার্থক্য, যা খালি সেট।
মাইকেলসনোডনউইন

উত্তর:


520

না, খালি সেটটির জন্য কোনও আক্ষরিক সিনট্যাক্স নেই। আপনাকে লিখতে হবে set()


আপনার মানে খালি সেটটির জন্য কোনও আক্ষরিক সিনট্যাক্স নেই? বা সাধারণভাবে সেট জন্য?
জোহান রেড

15
আক্ষরিক সেট রয়েছে তবে কেবল পাইথন ৩.x এ খালি সেটগুলির জন্য কোনওভাবেই আক্ষরিক নেই।

2
@ user763305: ভাষার ম্যানুয়ালটি এই বিষয়টিতে বেশ স্পষ্ট pretty docs.python.org/library/stdtyype.html#set-tyype-set-frozenset বলছে "নন-খালি সেট ...
ব্রেসগুলির

43
প্রকৃতপক্ষে সেট লিটারেলগুলি পাইথন ২.7 এ ব্যাকপোর্ট করা হয়েছে, সুতরাং সেগুলি পাইথন 3
জিম ব্রিসমোম

13
@ অ্যান্ডি এটি কোনও খালি সেট নয় - এটি 1 নম্বর সমেত একটি সেট You উপায় দ্বারা আপনার পিছনে কমা দরকার নেই - এটি কেবল টিউপসগুলির জন্য প্রয়োজনীয়।
sepp2k

53

যাইহোক, একটি খালি সেট তৈরি করতে দয়া করে ব্যবহার করুন set()

তবে, আপনি যদি লোককে প্রভাবিত করতে চান তবে তাদের বলুন যে আপনি আক্ষরিক ব্যবহার করে এবং *পাইথন> = 3.5 দিয়ে ( খাঁটি 448 দেখুন ) একটি ফাঁকা সেট তৈরি করতে পারেন :

>>> s = {*()}  # or {*{}} or {*[]}
>>> print(s)
set()

এটি মূলত এটি করার একটি আরও ঘনীভূত উপায় {_ for _ in ()}, তবে, এটি করবেন না।


কেন ?! পারফরম্যান্স প্রায় অভিন্ন:$ python3.7 -m timeit 'set()' 2000000 loops, best of 5: 177 nsec per loop $ python3.7 -m timeit '{*()}' 2000000 loops, best of 5: 171 nsec per loop
ogurets

9
@ ইউগ্রেটস, set()সম্ভবত বোঝা অনেক সহজ (কোড রক্ষণাবেক্ষণকারীদের জন্য) এবং এটি প্রায়শই পারফরম্যান্সের চেয়ে বেশি গুরুত্বপূর্ণ matters {*()}প্রায় চতুর অর্থে "চতুর" বলে মনে হচ্ছে।
বেনজিমিন

হেই, এতো চালাক।
কোওলস্কি

46

কেবল গৃহীত উত্তরটি প্রসারিত করতে:

সংস্করণ 2.7এবং 3.1পাইথন থেকে ব্যবহার আকারে setআক্ষরিক পেয়েছে , কিন্তু এটি এখনও খালি ডিকের জন্য ব্যবহৃত হয়।{}{1,2,3}{}

পাইথন ২.7 (প্রথম লাইনটি পাইথনে অবৈধ <২.7)

>>> {1,2,3}.__class__
<type 'set'>
>>> {}.__class__
<type 'dict'>

পাইথন 3.x

>>> {1,4,5}.__class__
<class 'set'>
>>> {}.__class__
<type 'dict'>

আরও এখানে: https://docs.python.org/3/whatnew/2.7.html##- ভাষা-পরিবর্তন


12
এই উত্তরটি ভুল। খালি সেট উপস্থাপনের জন্য এখনও কোনও আক্ষরিক সিনট্যাক্স নেই। {}.__class__এখনও দিবেdict
নিনজা 420

8
@ নিনজা 420 মন্তব্য করার আগে প্রথমে পড়ার চেষ্টা করুন, আমি লক্ষ্য করেছি যে
রিশিন

3
গৃহীত উত্তরটি এখনও সঠিক, এবং পুরানো নয়। খালি সেটটির জন্য আক্ষরিক সিনট্যাক্স নেই, খালি অভিধানের জন্য অবশ্য একটি রয়েছে।
AndreasHassing

2
@ খালি হ্যাঁ এর জন্য অ্যান্ড্রেসবিজর্ন, তবে খালি নয় এর জন্য আপনি পিইপি 8 ব্যতিক্রম এবং সেট আক্ষরিক ব্যবহারের পরামর্শ পাবেন।
রিশিন

আসলে, পাইট 3.6 দিয়ে {}.__class__ফিরে আসে <class 'dict'>', না<type 'dict'>
ক্লিভ করে

6

এটি নির্ভর করে যদি আপনি তুলনা করার জন্য, বা অ্যাসাইনমেন্টের জন্য আক্ষরিক চান।

আপনি যদি কোনও বিদ্যমান সেটটি খালি .clear()করতে চান তবে আপনি মেটোড ব্যবহার করতে পারেন , বিশেষত যদি আপনি কোনও নতুন অবজেক্ট তৈরি করা এড়াতে চান। আপনি যদি তুলনা করতে চান set()তবে দৈর্ঘ্য 0 হয় কিনা ব্যবহার করুন বা যাচাই করুন।

উদাহরণ:

#create a new set    
a=set([1,2,3,'foo','bar'])
#or, using a literal:
a={1,2,3,'foo','bar'}

#create an empty set
a=set()
#or, use the clear method
a.clear()

#comparison to a new blank set
if a==set():
    #do something

#length-checking comparison
if len(a)==0:
    #do something

8
a=set()সেটটি খালি করে না , তবে একটি নতুন সেট তৈরি করে এবং aপূর্ববর্তী কোনও মান ওভাররাইট করে এটি নির্ধারণ করে ।
অঙ্কুরিত

প্রকৃতপক্ষে. এ কারণেই আমি বলেছি যে আপনি যদি কোনও নতুন অবজেক্ট তৈরি করা এড়াতে চান তবে আপনার পরিষ্কার () ব্যবহার করা উচিত। আমি মনে করি আমার মন্তব্যটি কিছুটা আলাদাভাবে বলা উচিত ছিল।
ব্রায়ান মিন্টন

এটি আরও উপস্থিত হয় যে a.clear()পদ্ধতিটি ব্যবহারের তুলনায় কিছুটা দ্রুত a=set()এবং চেকিং len(a)==0সাম্যের জন্য যাচাই করার চেয়ে কিছুটা দ্রুতa==set()
ব্রায়ান মিনটন

3
পরিবর্তে if len(a)==0:এটি লেখার জন্য যথেষ্ট (এবং আরও পাইথোনিক) কেবল লেখার জন্য if a: (সম্পাদনা: বা বরং, if not a:শর্তের মেরুটির সাথে মেলে)।
জিম ওল্ডফিল্ড

2

পাগল ধারণাগুলিতে যুক্ত করা: পাইথন 3 ইউনিকোড শনাক্তকারীদের গ্রহণ করার সাথে আপনি একটি পরিবর্তনশীল ϕ = frozenset()(U হ'ল U + 03D5) ঘোষণা করতে পারেন এবং পরিবর্তে এটি ব্যবহার করতে পারেন।


4
সমস্যাটি হচ্ছে, setবস্তুগুলি পরিবর্তনযোগ্য, তাই আপনি নিজেকে ঝুঁকির মধ্যে ফেলছেন spam = ϕ; spam.add("eggs")
drdaeman

3
যদি ϕহিমায়িত হয় তবে spam.add("eggs")ব্যর্থ হয়, কারণ হিমায়িত সামগ্রীর কোনও addপদ্ধতি নেই।
ব্রায়ান মিন্টন

1
@ ব্রায়ানমিন্টন: তবে এটি হ'ল উদ্দেশ্যমূলক আচরণ। নোট করুন যে যখন কেউ span = ϕউভয়ই লিখেন spanএবং ϕএকই বস্তুর দিকে নির্দেশ করবেন, যেমন id(span) == id(ϕ)। সুতরাং, যদি spam.add("eggs")এটি কাজ করে তবে ϕঅবজেক্টটি আর খালি সেট হবে না, এবং আমরা drdaeman দ্বারা নির্দেশিত হিসাবে মূল সমস্যাটিতে ফিরে আসব
রেনাটো গার্সিয়া

1
@ রেনাটো গার্সিয়া খালি ডিকের আক্ষরিকের সাথে তুলনা করুন:>>> a={} >>> a['foo']='bar' >>> a {'foo': 'bar'}
ব্রায়ান মিন্টন

1

হ্যাঁ. নন-খালি ডিক / সেট জন্য একই স্বীকৃতি খালিগুলির জন্য কাজ করে।

শূন্য dictএবং setআক্ষরিক মধ্যে পার্থক্য লক্ষ্য করুন :

{1: 'a', 2: 'b', 3: 'c'}- ভিতরে অনেকগুলি কী-মান জোড় তৈরি করে dict
{'aaa', 'bbb', 'ccc'}- ভিতরে মানগুলির একটি দ্বিগুণ একটি করে aset

তাই:

{}== কী-মান জোড়ার শূন্য সংখ্যা == খালি dict
{*()}== মানগুলির ফাঁকা টিপল == খালিset

তবে সত্য, আপনি এটি করতে পারেন, তার মানে আপনার করা উচিত নয়। যদি আপনার কোনও দৃ reasons় কারণ না থাকে তবে খালি সেটটি পরিষ্কার করে তৈরি করা ভাল, যেমন:

a = set()

বিশেষ দ্রষ্টব্য : যেহেতু ctrueden খেয়াল মন্তব্য, {()}হয় না একটি খালি সেট। এটি 1 টি উপাদান সহ একটি সেট: খালি টিপল।


2
{()}খালি সেট নয়। এটি একটি সিঙ্গলটন সেট যার একটি উপাদান রয়েছে: খালি টিপল। আপনি চেক করে এই যাচাই করতে পারেন len({()})যা 1 হতে হবে, অথবা () in {()}যা হতে হবে True
ctrueden

1
উফ, আপনি ঠিক বলেছেন! আমি পোস্টটি আপডেট করেছি: {()}খালি সেট না হওয়ার বিষয়ে নোটটি যুক্ত করেছি , যদি অন্য কেউ একই ভুল করে। আপনাকে ধন্যবাদ, @ctrueden!
পাইকোডার

-1

পাইথনে খালি সেট তৈরি করার কয়েকটি উপায় রয়েছে:

  1. সেট () পদ্ধতি ব্যবহার করে
    এটি পাইথনের অন্তর্নির্মিত পদ্ধতি যা সেই চলকটিতে খালি সেট তৈরি করে।
  2. পরিষ্কার () পদ্ধতি ব্যবহার করে (সৃজনশীল প্রকৌশলী প্রযুক্তি LOL)
    এই উদাহরণটি দেখুন:

    সেট = {"হাই", "কিভাবে", "হয়", "আপনি", "সমস্ত"}
    প্রকার (সেট) (এই লাইন আউটপুট: সেট)
    সেটগুলি .ষ্পষ্ট ()
    মুদ্রণ (সেট) (এই লাইন আউটপুট: {})
    প্রকার (সেট) (এই লাইন আউটপুট: সেট)

সুতরাং, খালি সেট তৈরি করার এটি 2 উপায়।

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