পাইথনে গল্ফ করার জন্য এটি একটি টিপস প্রশ্ন।
পাইথন গল্ফিংয়ে, লাম্বদা হিসাবে সংজ্ঞায়িত ফাংশন হিসাবে জমা দেওয়ার পক্ষে এটি সাধারণ common উদাহরণ স্বরূপ,
f=lambda x:0**x or x*f(x-1)
ল্যাম্বডা ফর্ম্যাটটির দুটি বড় সুবিধা রয়েছে :
- এর boilerplate,
f=lambda x:...
বাlambda x:...
তুলনায় খাটোdef f(x):...return...
বাx=input()...print...
- একটি পুনরাবৃত্ত কলটি অল্প বাইট ওভারহেডের সাথে লুপ করতে ব্যবহৃত হতে পারে।
যাইহোক, ল্যাম্বডাসের কাছে কেবলমাত্র একটি একক অভিব্যক্তি, কোনও বিবৃতি দেওয়ার অনুমতি দেওয়ার বড় অসুবিধা রয়েছে। বিশেষত, এর অর্থ কোনও অ্যাসাইনমেন্ট নেই c=chr(x+65)
। এটির ক্ষেত্রে সমস্যাটি হয় যখন কারও মধ্যে দীর্ঘ অভিব্যক্তি থাকে যার মান দুবার উল্লেখ করা (বা আরও)।
E=enumerate
কার্যবিধির বাইরে বা argumentচ্ছিক আর্গুমেন্ট হিসাবে এই জাতীয় কার্যভারগুলি সম্ভব, তবে কেবলমাত্র যদি তারা ফাংশন ইনপুটগুলির উপর নির্ভর না করে। f=lambda n,k=min(n,0):...
ব্যর্থ যেমন ption চ্ছিক যুক্তি কারণ সংজ্ঞা সময় n
যখন k
মূল্যায়ন করা হয় ইনপুট সংজ্ঞায়িত করা হয় নি ।
ফলস্বরূপ যে কখনও কখনও আপনি একটি ল্যাম্বডায় একটি দীর্ঘ অভিব্যক্তি পুনরাবৃত্তি স্তন্যপান কারণ বিকল্পটি একটি দীর্ঘ অ ল্যাম্বদা হয় da
lambda s:s.strip()+s.strip()[::-1]
def f(s):t=s.strip();print t+t[::-1]
বিরতি এমনকি পয়েন্টটি প্রায় 11 টি অক্ষর ( বিশদ ), অতীতে যা আপনি একটি def
বা স্যুইচ করেন program
। পুনরাবৃত্তি প্রকাশের জন্য এটিকে সাধারণ ব্রেক-সমান দৈর্ঘ্যের 5 এর সাথে তুলনা করুন:
range(a)+range(b)
r=range;r(a)+r(b)
print s[1:],s[1:]*2
r=s[1:];print r,r*2
অন্যান্য ভাষার উদাহরণস্বরূপ অক্টাভা রয়েছে । পাইথনের জন্য পরিচিত কৌশলগুলি রয়েছে তবে সেগুলি দীর্ঘ, আটকানো এবং / অথবা সীমাবদ্ধ-ব্যবহার। ল্যাম্বডায় অ্যাসাইনমেন্ট অনুকরণ করার জন্য একটি ছোট, সাধারণ উদ্দেশ্য পদ্ধতিটি পাইথন গল্ফিংয়ে বিপ্লব ঘটাবে।
পাইথন গল্ফারের পক্ষে এই সীমাবদ্ধতাটি কাটিয়ে ওঠার উপায় কী কী? ল্যাম্বডায় দু'বার দীর্ঘ অভিব্যক্তি পুনরাবৃত্তি করতে দেখলে তাদের কোন সম্ভাব্য ধারণাগুলি মনে রাখা উচিত?
এই টিপস প্রশ্নটির সাথে আমার লক্ষ্য হ'ল এই সমস্যার গভীর গভীরতা ডুবানো এবং:
- একটি ল্যাম্বদার ভিতরে জাল কার্যভারের জন্য গল্ফিং ওয়ার্কআউন্ডের তালিকাভুক্ত এবং বিশ্লেষণ করুন
- আরও ভাল পদ্ধতির জন্য নতুন সীসা এক্সপ্লোর করুন
প্রতিটি উত্তরের একটি কার্যকরী বা সম্ভাব্য সীসা ব্যাখ্যা করা উচিত।
lambda s:(s+s[::-1]).lower()
। অবশ্যই এটি আসল প্রশ্নের উত্তর দেয় না।
strip
।