पायथन: दो सूचियों से वस्तुओं को इंटरलेवे करने का सबसे छोटा तरीका


9

मैं सूची 3 प्राप्त करने के लिए सबसे छोटा रास्ता (चरित्र संभव) प्राप्त करने की कोशिश कर रहा हूं।

सूची 1 और सूची 2 मुझे पहले से ही तर्क के रूप में दी गई है और समान लंबाई है।

l1 = [1, 2, 3, 4, 5]
l2 = ['a', 'b', 'c', 'd', 'e']

और सूची 3 की तरह दिखना चाहिए (हाँ, यह एक सूची होनी चाहिए):

l3 = ['a', 1, 'b', 2, 'c', 3, 'd', 4, 'e', 5]

2
विशिष्ट सूची सचमुच उत्पादन के लिए अपने लक्ष्य है l3 = ['a', 1, 'b', 2, 'c', 3, 'd', 4, 'e', 5]दिया l1 = [1, 2, 3, 4, 5]और l2 = ['a', 'b', 'c', 'd', 'e']पहले से ही सौंपा, या विचार यह है कि l1और l2एक ही लंबाई के किसी भी दो सूचियों हो सकता है?
xnor

जवाबों:


13

जिप और सम

[*sum(zip(l2,l1),())]

इसे ऑनलाइन आज़माएं!

दो सूचियों को एक साथ जोड़ देता है फिर एक संयुक्त सूची बनाने के लिए सभी ट्यूपल्स जोड़ता है। ज़िप केवल तभी काम करता है जब सूचियों को समान आकार की गारंटी दी जाती है, अन्यथा यह लंबी सूची को काट देती है।

[* ]FryAmTheEggman के सुझाव के अनुसार इसे सूची में बदलने के लिए आसपास जोड़ा गया ।


2
यदि पायथन 2 का उपयोग कर रहे हैं, तो आप केवल 3 बाइट्स के listबजाय उपयोग कर सकते हैं [* (...) ]
आउटगॉल्फ

7

स्लाइस असाइनमेंट

c=a*2
c[1::2]=a
c[::2]=b

जो किंग के समाधान का उपयोग करने की तुलना में यह तीन बाइट्स लंबा है c=[*sum(zip(b,a),())], लेकिन यह निफ्टी है। यह स्थितिजन्य रूप से छोटा हो सकता है (मैं सोच नहीं सकता कि कहां, हालांकि)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.