2010-07-03 23 views
53

पायथन में, मैं किसी आइटम को किसी सूची में एक निश्चित अनुक्रमणिका में कैसे स्थानांतरित करूं?किसी आइटम को सूची में ले जाएं?

+0

की संभावित डुप्लिकेट [ पाइथन में सामने के लिए एक सूची तत्व लाने के लिए सरल वाक्यविन्यास?] (Https://stackoverflow.com/questions/1014523/simple-syntax-for-bringing-a-list-element-to-the-front-in-python) –

उत्तर

96

एक सूची के insert विधि का उपयोग करें:

l = list(...) 
l.insert(index, item) 

वैकल्पिक रूप से, आप एक टुकड़ा संकेतन का उपयोग कर सकते हैं:

l[index:index] = [item] 

आप किसी आइटम निर्दिष्ट करने के लिए सूची में पहले से मौजूद ले जाना चाहते हैं स्थिति, आपको इसे हटाना होगा और इसे नई स्थिति में डालना होगा:

l.insert(newindex, l.pop(oldindex)) 
+15

बस ध्यान रखें कि सम्मिलित/पॉप विधि के साथ किसी सूची में पहले से ही किसी आइटम को ले जाना अलग-अलग व्यवहार होगा यदि आप आगे या पीछे की तरफ बढ़ रहे हैं एफ सूची। आपके द्वारा चुने गए ऑब्जेक्ट से पहले डालें बाईं ओर ले जाना। आपके द्वारा चुने गए आइटम के बाद आपके द्वारा डाली गई पीठ पर वापस जाएं। सूची के अंत में जाने के लिए जांचें (अनुक्रमणिका त्रुटि)। – MKaras

+0

एकाधिक तत्वों को कैसे स्थानांतरित करें? एक सूची को देखते हुए = [1,2,3,4,5,6,7,8,9], इसे कैसे बदलें [1,2, [3,4,5], 6,7,8,9 ]? क्या यह एक कदम या सूची समझ के साथ किया जा सकता है? – g33kz0r

+0

@MKaras मैंने पाइथन 3.5 के साथ इसका परीक्षण किया और आप त्रुटियों के बिना 'अंतिम अनुक्रमणिका + 1' पर सम्मिलित कर सकते हैं। तत्व उस मामले में सूची में शामिल है। – user2061057

17
l += [l.pop(0)] 

उदाहरण के लिए::

>>> l = [1,2,3,4,5] 
>>> l += [l.pop(0)] 
>>> l 
[2, 3, 4, 5, 1] 
+3

आप 'l.append (l.pop (0)) का भी उपयोग कर सकते हैं। यह केवल मामूली लंबा है, लेकिन यह बहुत अधिक पठनीय है। – CoreDumpError

+0

@ कोर डंपरर हाँ, यह वही करता है। मैंने '.append()' से पहले '+ =' वाक्यविन्यास को महत्वपूर्ण रूप से सीखा, इसलिए इसका उपयोग करने के लिए मेरी पूर्वाग्रह। – Tim

7

आप, आइटम की स्थिति पता नहीं है आपएक थोड़ा कम समाधान, कि केवल अंत करने के लिए आइटम ले जाता है, नहीं कहीं भी यह है पहले सूचकांक खोजने की जरूरत है हो सकता है:

old_index = list1.index(item) 

तो इसे स्थानांतरित:

list1.insert(new_index, list1.pop(old_index)) 

या IMHO एक क्लीनर तरीका:

try: 
    list1.remove(item) 
    list1.insert(new_index, item) 
except ValueError: 
    pass 
1

एक समाधान बहुत आसान है, लेकिन आप मूल स्थिति के सूचकांक और नई स्थिति के सूचकांक पता करने के लिए है:

list1[index1],list1[index2]=list1[index2],list1[index1] 
+1

यह एक स्वैप है, एक कदम नहीं। – juzzlin

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