2013-05-18 9 views
61

में एक पंक्ति में एक से अधिक आइटम कैसे जोड़ें मेरे पास है:अजगर

count = 0 
i = 0 
while count < len(mylist): 
    if mylist[i + 1] == mylist[i + 13] and mylist[i + 2] == mylist[i + 14]: 
     print mylist[i + 1], mylist[i + 2] 
    newlist.append(mylist[i + 1]) 
    newlist.append(mylist[i + 2]) 
    newlist.append(mylist[i + 7]) 
    newlist.append(mylist[i + 8]) 
    newlist.append(mylist[i + 9]) 
    newlist.append(mylist[i + 10]) 
    newlist.append(mylist[i + 13]) 
    newlist.append(mylist[i + 14]) 
    newlist.append(mylist[i + 19]) 
    newlist.append(mylist[i + 20]) 
    newlist.append(mylist[i + 21]) 
    newlist.append(mylist[i + 22]) 
    count = count + 1 
    i = i + 12 

मैं कुछ बयान में newlist.append() बयान देने के लिए करना चाहता था।

+0

खैर स्पष्ट रूप से यह एक ही नहीं है यदि आप अलग अलग परिणाम प्राप्त। – JJJ

+0

यह अमान्य वाक्यविन्यास है। – TerryA

+4

आपकी ऑब्जेक्ट्स को मानना ​​है कि सूचियां हैं, आपका कोड वैध पायथन नहीं है क्योंकि आप '(]' के बजाय '[]' का उपयोग कर रहे हैं। कृपया असली कामकाजी कोड पोस्ट करें। – BrenBarn

उत्तर

151

नहीं। पूरे अनुक्रम को जोड़ने के लिए विधि list.extend() है। ताकि आप append[i+1:i+4] क्योंकि आप एक बात यह है कि एक दृश्य नहीं है का एक टुकड़ा पाने के लिए कोशिश कर रहे हैं नहीं लिख सकते हैं

>>> L = [1, 2] 
>>> L.extend((3, 4, 5)) 
>>> L 
[1, 2, 3, 4, 5] 
+0

'सम्मिलित करें' फ़ंक्शंस 'एपेंड' के रूप में है लेकिन सूची की शुरुआत में जोड़ता है। क्या सूची की शुरुआत में कई मान जोड़ने के लिए कोई फ़ंक्शन है? – sparrow

+0

@sparrow: नहीं स्लाइस-असाइन करें। –

4

सं

पहले, append, एक समारोह है। (आप इसका कोई तत्व नहीं प्राप्त कर सकते हैं, या तो: append[i+1] इसी कारण से गलत है।) जब आप कोई फ़ंक्शन कॉल करते हैं, तो तर्क कोष्ठक में चला जाता है, यानी राउंड वाले: ()

दूसरा, आप जो करने की कोशिश कर रहे हैं वह है "मूल अनुक्रम में, इस अनुक्रम के अंत में प्रत्येक तत्व को इसमें शामिल करें"। यह extend वर्तनी है। append "इस बात को ले लो, और इसे सूची के अंत में एक आइटम के रूप में, पर रखें, भले ही यह एक सूची" हो। (याद रखें कि एक सूची अनुक्रम का एक प्रकार है।)

लेकिन फिर, आपको यह पता होना चाहिए कि i+1:i+4 एक विशेष निर्माण है जो केवल वर्ग ब्रैकेट के अंदर दिखाई देता है (अनुक्रम से एक टुकड़ा प्राप्त करने के लिए) और ब्रेसिज़ (बनाने के लिए) एक dict ऑब्जेक्ट)। आप इसे किसी फ़ंक्शन में पास नहीं कर सकते हैं। तो आप इसके साथ extend नहीं कर सकते हैं। आपको उन मानों का अनुक्रम बनाना होगा, और ऐसा करने का प्राकृतिक तरीका range फ़ंक्शन के साथ है।

1

तुम भी किए जा सकेंगे:

newlist += mylist[i:i+22]