किसी सूची से पहला आइटम कैसे निकालें?


772

मेरे पास वह सूची है जिसे [0, 1, 2, 3, 4]मैं इसमें बनाना चाहूंगा [1, 2, 3, 4]। यह कैसे करना है?

जवाबों:


1256

अजगर सूची

list.pop (इंडेक्स)

>>> l = ['a', 'b', 'c', 'd']
>>> l.pop(0)
'a'
>>> l
['b', 'c', 'd']
>>> 

डेल सूची [सूचकांक]

>>> l = ['a', 'b', 'c', 'd']
>>> del l[0]
>>> l
['b', 'c', 'd']
>>> 

ये दोनों आपकी मूल सूची को संशोधित करते हैं।

दूसरों ने स्लाइसिंग का उपयोग करने का सुझाव दिया है:

  • सूची की प्रतिलिपि बनाता है
  • एक सबसेट वापस कर सकते हैं

इसके अलावा, यदि आप कई पॉप (0) कर रहे हैं, तो आपको संग्रह देखना चाहिए

from collections import deque
>>> l = deque(['a', 'b', 'c', 'd'])
>>> l.popleft()
'a'
>>> l
deque(['b', 'c', 'd'])
  • सूची के बाएं छोर से उच्च प्रदर्शन पॉपिंग प्रदान करता है

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

189

टुकड़ा करने की क्रिया:

x = [0,1,2,3,4]
x = x[1:]

जो वास्तव में मूल के एक सबसेट को लौटाएगा लेकिन इसे संशोधित नहीं करेगा।


16
यदि xखाली है, x=x[1:]तो शिकायत किए बिना इसे खाली छोड़ देगा। x.pop(0)एक खाली सूची के लिए फेंक देंगे x। कभी-कभी फेंकना वही होता है जो कोई चाहता है: यदि यह मान लिया जाए कि सूची में कम से कम एक तत्व गलत है, तो कोई अधिसूचित करना चाहता है।
ead

इसके लिए धन्यवाद! यह एक बेहतर जवाब है, imo, क्योंकि यह विनाशकारी नहीं है
Hee जिन


29

सूची स्लाइसिंग के साथ, अधिक विवरण के लिए सूचियों के बारे में पायथन ट्यूटोरियल देखें:

>>> l = [0, 1, 2, 3, 4]
>>> l[1:]
[1, 2, 3, 4]

29

आप बस यही करेंगे

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

या l = l[1:]

फायदा और नुकसान

पॉप का उपयोग करके आप मान प्राप्त कर सकते हैं

कहना x = l.pop(0) xहोगा0



8

आप list.reverse()सूची को उलटने के लिए, फिर list.pop()अंतिम तत्व को हटाने के लिए उपयोग कर सकते हैं , उदाहरण के लिए:

l = [0, 1, 2, 3, 4]
l.reverse()
print l
[4, 3, 2, 1, 0]


l.pop()
0
l.pop()
1
l.pop()
2
l.pop()
3
l.pop()
4

5

तुम भी उपयोग कर सकते हैं list.remove(a[0])करने के लिए popसूची में पहले तत्व बाहर।

>>>> a=[1,2,3,4,5]
>>>> a.remove(a[0])
>>>> print a
>>>> [2,3,4,5]

3
ओपी इसे करने के सबसे अच्छे तरीके के बारे में नहीं पूछ रहा है। यह उसी को प्राप्त करने के लिए सिर्फ एक और तरीका है!
vertexion

1
हां, एक अन्य दृष्टिकोण जिसका अन्य उत्तरों पर कोई लाभ नहीं है। इसे करने के कई तरीके हैं। का जवाब क्यों नहीं दिया a.remove(a[1-1])? वह दूसरा तरीका है।
नेड बचेलेर

2
मेरा कहना है कि आपका उत्तर बदतर है कि अन्य उत्तर, और इसकी सिफारिश करने के लिए कुछ भी नहीं है। दूसरों के ऊपर इस उत्तर का उपयोग करने का कोई कारण नहीं है। सिर्फ इसलिए कि यह "एक और तरीका" है, इसे यहां जोड़ने का कोई कारण नहीं है।
नेड बाचेल्ड

4
@NedBatchelder आपकी बात मूट है। यह पायथन में सूचियों के लिए उपलब्ध एक अतिरिक्त विधि है, जो इस विशेष कार्य के लिए विशिष्ट है, और पूर्णता के लिए इसे नोट किया जाना चाहिए। दूसरी ओर बीएस एक [1-1] उदाहरण से वंचित है, यह नहीं है। यह उल्लेख करने के लिए नहीं कि उसका उत्तर किसी भी तरह से "अन्य उत्तरों से बदतर" नहीं है।
हज्जाज़मैन

8
मैं अपने प्रश्न के साथ खड़ा हूं: यह अजीब और आकस्मिक लगता है, और इसकी सिफारिश करने के लिए कुछ भी नहीं है। वास्तव में, पहला वाक्य भ्रामक है, क्योंकि आप i'th तत्व को नहीं निकाल सकते list.remove(a[i])। डुप्लिकेट मानों के साथ, यह समान मान वाला एक पुराना तत्व ढूंढ सकता है और i'th के बजाय उस एक को हटा सकता है।
नेड बाचेल्डर


1

एक डिटैस्ट्रक्चर है जिसे "डीके" या डबल एंडेड कतार कहा जाता है जो सूची की तुलना में तेज और कुशल है। आप अपनी सूची का उपयोग कर सकते हैं और इसे deque में बदल सकते हैं और इसमें आवश्यक परिवर्तन कर सकते हैं। तुम भी सूची में वापस deque परिवर्तित कर सकते हैं।

import collections
mylist = [0, 1, 2, 3, 4]

#make a deque from your list
de = collections.deque(mylist)

#you can remove from a deque from either left side or right side
de.popleft()
print(de)

#you can covert the deque back to list
mylist = list(de)
print(mylist)

Deque भी सूची के दोनों ओर या किसी विशिष्ट सूचकांक में तत्वों को सम्मिलित करने जैसे बहुत उपयोगी कार्य प्रदान करता है। आप एक चक्र को घुमा या उलट भी सकते हैं। कोशिश करो!!

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