2009-07-17 5 views
19

कहो में कुछ सूची आइटम मर्ज मैं इस तरह एक सूची है:एक अजगर सूची

[a, b, c, d, e, f, g] 

कैसे है कि सूची को संशोधित करते इतना है कि यह इस तरह दिखता है?

[a, b, c, def, g] 

मैं अधिक पसंद करता हूं कि यह मौजूदा सूची को सीधे संशोधित करे, न कि एक नई सूची बनाई गई।

+1

किस आधार पर विलय जगह ले जाना चाहिए? – Stephan202

+2

ए, बी, आदि क्या हैं (यानी डेटा प्रकार क्या है)? जैसा कि यह खड़ा है, इसे एक पायथन दुभाषिया में टाइप करना एक त्रुटि देता है क्योंकि ये अनबाउंड नाम हैं। –

+0

क्या आप हमेशा उन वस्तुओं को सूची में सूचीबद्ध करना चाहते हैं, या आप कहां और कितने बाद में चुनने में सक्षम होना चाहते हैं? – tgray

उत्तर

27

वह उदाहरण बहुत अस्पष्ट है, लेकिन शायद ऐसा कुछ हो सकता है?

items = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] 
items[3:6] = [''.join(items[3:6])] 

यह मूल रूप से एक जोड़ (या assignment to a slice) आपरेशन करता है। यह आइटम 3 से 6 को हटा देता है और इस स्थान पर एक नई सूची डालता है (इस मामले में एक आइटम के साथ एक सूची, जो हटाए गए तीन आइटमों का संगतता है।)

किसी भी प्रकार की सूची के लिए, आप कर सकते हैं इस (कोई बात नहीं क्या अपने प्रकार है सभी वस्तुओं पर + ऑपरेटर का उपयोग):

items = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] 
items[3:6] = [reduce(lambda x, y: x + y, items[3:6])] 

यह एक lambda समारोह है कि मूल रूप से एक साथ + ऑपरेटर का उपयोग आइटम कहते हैं के साथ reduce समारोह का उपयोग करता है।

+0

यह स्ट्रिंग्स की सूची के लिए बहुत अच्छा काम करता है। यदि तत्व स्ट्रिंग नहीं हैं, तो आपको '.join() – tgray

+0

के अलावा कुछ और उपयोग करने की आवश्यकता होगी। आप सही हैं, मैंने' कमी 'का उपयोग करके एक उदाहरण जोड़ा जो किसी भी प्रकार के आइटम के लिए काम करता है जो '+' ऑपरेटर। जब तक ओपी अपने प्रश्न पर विस्तार नहीं करता तब तक मैं उससे अधिक नहीं कर सकता। – Blixt

+0

उनका प्रश्न वास्तव में तारों की तुलना में किसी और चीज़ के लिए समझ में नहीं आता है। –

37

विलय के आधार पर किस आधार पर होना चाहिए? आपका सवाल अस्पष्ट है। इसके अलावा, मुझे लगता है कि ए, बी, ..., एफ तारों के रूप में माना जाता है, यानी, 'ए', 'बी', ..., 'एफ'। sequence types पर दस्तावेज़ीकरण बाहर

>>> x = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] 
>>> x[3:6] = [''.join(x[3:6])] 
>>> x 
['a', 'b', 'c', 'def', 'g'] 

चेक, विशेष रूप से mutable sequence types पर। और शायद string methods पर भी।

0

मेरी टेलिपाथिक क्षमताओं विशेष रूप से महान नहीं हैं, लेकिन यहाँ मैं क्या लगता है कि आप चाहते हैं:

def merge(list_of_strings, indices): 
    list_of_strings[indices[0]] = ''.join(list_of_strings[i] for i in indices) 
    list_of_strings = [s for i, s in enumerate(list_of_strings) if i not in indices[1:]] 
    return list_of_strings 

मैं, ध्यान देना चाहिए, क्योंकि यह स्पष्ट नहीं हो सकता है, कि यह क्या अन्य में प्रस्तावित है के रूप में ही नहीं है जवाब।

4

सिर्फ एक बदलाव

alist=["a", "b", "c", "d", "e", 0, "g"] 
alist[3:6] = [''.join(map(str,alist[3:6]))] 
print alist 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^