पायथन में आइटम-वार स्ट्रिंग्स की संक्षिप्त सूची


13

यह में गोल्फ के लिए एक सवाल है ।

मान लीजिए कि आपके पास स्ट्रिंग्स की दो सूची हैं, और आप प्रत्येक सूची से संबंधित प्रविष्टियों को संक्षिप्त करना चाहते हैं। जैसे a=list("abcd")और b=list("1234"), गणना ["a1","b2","c3","d4"]।

यह सरणी-आधारित प्रोग्रामिंग भाषाओं में तुच्छ है, जहां ऑपरेशन आमतौर पर सूचियों के लिए सदस्य के रूप में लागू होते हैं। उदाहरण के लिए, मेरी गोल्फ भाषा पिप में , कोड बस है 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__किसी कारण से यह देखने के लिए जाँच नहीं की गई कि क्या वह छोटा था।
— DLosc

1
@ इस उत्तर का वास्तविक लाभ mapकई पुनरावृत्तियों के साथ उपयोग कर रहा है , जो स्वचालित रूप से ज़िपिंग को नापसंद करते हैं । इसके बिना यह छोटा नहीं होगा। ध्यान दें कि यदि आपके कोड में आपको कुछ __*__तरीकों का from operator import *उपयोग करना है तो ऐसा करना कम हो सकता है और फिर उपयोग कर सकते हैं map(add,a,b)।
— बाकुरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.