উত্তর:
প্রতিটি অজগর ধারক সি এর জন্য প্রত্যাশাটি এটি
for item in C:
assert item in C
ঠিক জরিমানা পাস করবে - আপনি কি অবাক করে দেখবেন না যদি in
(লুপ ক্লজ) এর একটি বোধের অন্যটির (উপস্থিতি চেক) থেকে সম্পূর্ণ আলাদা অর্থ হয়? আমি নিশ্চিত! এটি স্বাভাবিকভাবে তালিকা, সেট, টিপলস, ...
সুতরাং, অভিধানটি কখন C
, in
কোনও for
লুপে কী / মান টিপলস সরবরাহ করতে হয় , তারপরে, অন্তত বিস্ময়ের নীতি অনুসারে, in
কনটেন্টমেন্ট চেকটিতে তার বাম-হাতের ক্রিয়াকলাপ হিসাবে একটি টুপল নিতে হবে।
এটা কিভাবে দরকারী হবে? বেশ বেহুদা প্রকৃতপক্ষে, মূলত উপার্জন if (key, value) in C
জন্য একটি প্রতিশব্দ if C.get(key) == value
- যা একটি চেক আমি বিশ্বাস করি আমি সম্পাদিত হয়েছে পারে, অথবা সম্পাদন করতে চেয়েছিলাম, 100 গুণ বেশি খুব কমই কি আর if k in C
আসলে মানে , কী উপস্থিতি চেক শুধুমাত্র এবং সম্পূর্ণরূপে মান উপেক্ষা।
অন্যদিকে, কেবল কীগুলিতে লুপ করতে চাওয়া বেশ সাধারণ, যেমন:
for k in thedict:
thedict[k] += 1
পাশাপাশি মান রাখলে বিশেষত সহায়তা হয় না:
for k, v in thedict.items():
thedict[k] = v + 1
আসলে কিছুটা কম পরিষ্কার এবং কম সংক্ষিপ্ত। (মনে রাখবেন items
কী / মান জোড়া পেতে "যথাযথ" পদ্ধতির মূল বানানটি ছিল: দুর্ভাগ্যক্রমে সেই দিনগুলিতে ফিরে এসেছিল যখন এই ধরণের অ্যাক্সেসররা পুরো তালিকাগুলি ফিরিয়ে দেয়, তাই "কেবল পুনরাবৃত্তি" সমর্থন করার জন্য একটি বিকল্প বানান প্রবর্তন করতে হয়েছিল , এবং iteritems
এটি ছিল - পাইথন 3-তে, যেখানে পূর্ববর্তী পাইথন সংস্করণগুলির সাথে পিছনের দিকে সামঞ্জস্যতার সীমাবদ্ধতাগুলি অনেক দুর্বল হয়ে গিয়েছিল, এটি items
আবার হয়ে গেছে )।
আমার অনুমান: পূর্ণ tuple ব্যবহার লুপিং জন্য আরও বেশি ধারণাসম্পন্ন হতে পারে, কিন্তু সম্ভবত সদস্যপদের জন্য পরীক্ষা ব্যবহার করার জন্য, যাতে কম in
।
if key in counts:
counts[key] += 1
else:
counts[key] = 1
যদি আপনার কী এবং মান উভয়ই নির্দিষ্ট করতে হয় তবে সেই কোডটি আসলে কাজ করবে না in
। ব্যবহারের ক্ষেত্রে কল্পনা করার ক্ষেত্রে আমার খুব কষ্ট হচ্ছে, যেখানে আপনি কী এবং মান উভয়ই অভিধানে রেখেছেন কিনা তা পরীক্ষা করে দেখতে চান। কেবল কীগুলি পরীক্ষা করা এটি অনেক বেশি প্রাকৃতিক।
# When would you ever write a condition like this?
if (key, value) in dict:
এখন in
অপারেটর এবং for ... in
একই আইটেমগুলির উপর পরিচালনা করা প্রয়োজন হয় না। বাস্তবায়ন-ভিত্তিতে তারা বিভিন্ন অপারেশন ( __contains__
বনাম __iter__
)। তবে এই সামান্য অসঙ্গতি কিছুটা বিভ্রান্তিকর এবং, ভাল, বেমানান হবে।
x in foo
শুধুমাত্র যদিi
মধ্যেfor i in foo
মান অনুমানx
এক পর্যায়ে আমি বলতে হবে যে এটি একটি খুব হবে বিশাল অসঙ্গতি।