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


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.