পাইথনে স্ট্রিং আইটেম-ভিত্তিক স্ট্রিংগুলির সংঘবদ্ধ তালিকা


13

এই হল মধ্যে golfing জন্য প্রশ্ন

ধরুন আপনার কাছে স্ট্রিংয়ের দুটি তালিকা রয়েছে এবং আপনি প্রতিটি তালিকা থেকে সংশ্লিষ্ট এন্ট্রিগুলিকে একত্রে করতে চান। যেমন a=list("abcd")এবং সাথে b=list("1234")গণনা করুন ["a1","b2","c3","d4"]

এটি অ্যারে-ভিত্তিক প্রোগ্রামিং ভাষাগুলিতে তুচ্ছ, যেখানে ক্রিয়াকলাপগুলি সাধারণত তালিকাগুলিতে সদস্যতার সাথে প্রয়োগ করে apply উদাহরণস্বরূপ, আমার গল্ফিং ভাষা পাইপে , কোডটি সহজভাবে a.b। কিন্তু পাইথনে এটি এত সহজ নয়।

পাইথোনিক উপায় সম্ভবত ব্যবহার zipএবং একটি তালিকা বোঝার জন্য (25 অক্ষর):

[x+y for x,y in zip(a,b)]

আর একটি পদ্ধতি mapল্যাম্বদা ফাংশন সহ (23):

map(lambda x,y:x+y,a,b)

নীচে আমি সংক্ষিপ্ততমটি নিয়ে এসেছি (21):

map("".join,zip(a,b))

কোন ছোট পদ্ধতি আছে?

ধরে নিও যে তালিকাগুলি একই দৈর্ঘ্যের এবং এক ধরণের পুনরাবৃত্ত হওয়া দরকার যা সমস্ত দরকার (তাই mapপাইথন 3 এ কোনও বস্তু সূক্ষ্ম)।



@ মাস্ট টিপস তালিকার এমন কোনও উত্তর রয়েছে যা এই নির্দিষ্ট প্রশ্নের সমাধান করে?
মার্টিন এন্ডার

@ মার্টিনবাটনার যদি তা না হয় তবে তা করা উচিত। বিশৃঙ্খলা রোধ করে এবং সমস্ত কৌশল টোজিটার ইত্যাদি রাখে
মাস্ট

উত্তর:


14

20 অক্ষর

map(str.__add__,a,b)

আপনার বেনাম ফাংশনের জায়গায় স্ট্রিংগুলি __add__দ্বারা অনুরোধ +করা বিল্ট-ইন পদ্ধতি স্ট্রিং সংযোজন পদ্ধতি ব্যবহার করে lambda x,y:x+y


আপনি জানেন, আমি ভেবেছিলাম str.__add__কিন্তু কোনও কারণে এটি সংক্ষিপ্ত কিনা তা পরীক্ষা করে দেখেনি।
ডিএলসাস

1
@ ডিএলকাস এই উত্তরটির আসল সুবিধাটি mapএকাধিক পুনরাবৃত্তকারীগুলির সাথে ব্যবহার করছে, যা স্বয়ংক্রিয়ভাবে জিপিংটি নিষ্ক্রিয় করে । এটি ছাড়া এটি ছোট হবে না। মনে রাখবেন যে আপনার কোডে যদি আপনাকে কয়েকটি __*__পদ্ধতি অ্যাক্সেস করতে হয় তবে এটি করা আরও ছোট হতে পারে from operator import *এবং তারপরে ব্যবহার করতে পারেন map(add,a,b)
বাকুরিউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.