දර්ශක අනුව ලැයිස්තුවකින් මූලද්‍රව්‍යයක් ඉවත් කරන්නේ කෙසේද


1532

පයිතන් හි දර්ශකය අනුව ලැයිස්තුවකින් මූලද්‍රව්‍යයක් ඉවත් කරන්නේ කෙසේද?

මම list.removeක්රමය සොයා ගත්තා , නමුත් අවසාන අංගය ඉවත් කිරීමට අවශ්ය යැයි කියන්න, මම මෙය කරන්නේ කෙසේද? පෙරනිමියෙන් ඉවත් කිරීම ලැයිස්තුවක් සේ පෙනේ, නමුත් කිසිදු සෙවීමක් සිදු කිරීමට මට අවශ්‍ය නැත.


11
@smci: පයිතන් ලැයිස්තුව අරාව මත පදනම් වූවකි: මැද ඇති අයිතමයක් මකා දැමීමට, කාල පරතරය ඉවත් කිරීමට ඇති පරතරය ඉවත් කිරීම සඳහා ඔබට සියලු අයිතම දකුණු පසින් ගෙන යා O(n)යුතුය. deque()දෙපසම කාර්යක්ෂම මෙහෙයුම් සපයන නමුත් එය O (1) මැදට ඇතුළු කිරීම් / බැලීම් / මකාදැමීම් සපයන්නේ නැත.
jfs

@JFSebastian: cPython ක්‍රියාත්මක කිරීම, ඔව්, මාව නිවැරදි කිරීම ගැන ස්තූතියි. ධර්මය භාෂාව පිරිවිතර විකල්ප නිර්මාණයන් සම්බන්ධිත-ලැයිස්තුව භාවිතා කිරීමට තෝරා හැකි ලැයිස්තුව ක්රියාත්මක කිරීමට අයුරු විස්තර නොකරයි.
smci

@smci: කිසිදු ප්‍රායෝගික පයිතන් ක්‍රියාත්මක කිරීමක් O(n)දර්ශක ප්‍රවේශය භාවිතා නොකරයි a[i](සම්බන්ධිත ලැයිස්තු නිසා). සටහන: අරාව මත පදනම් වූ ක්‍රියාත්මක කිරීම O(1)දර්ශක ප්‍රවේශය සපයයි .
jfs

@ ජේඑෆ් සෙබස්තියන්: ඇත්තෙන්ම. භාෂා පිරිවිතර මෙය නිර්වචනය නොකරන බව මම සඳහන් කළෙමි , එය ක්‍රියාත්මක කිරීමේ ගැටලුවක්. (එය සිදු නොවීම ගැන මා පුදුමයට පත් විය.)
smci

@smci ඔබ එය පුළුල් ලෙස ඉලක්ක කරන්නේ නම්, ඔබට ඕනෑම දෙයක් ප්‍රශස්තිකරණය කිරීමට බලාපොරොත්තු වන්නේ කෙසේදැයි මට විශ්වාස නැත.
නික් ටී

Answers:


1774

delඔබට මැකීමට අවශ්‍ය මූලද්‍රව්‍යයේ දර්ශකය භාවිතා කරන්න සහ නියම කරන්න :

>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> del a[-1]
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8]

පෙති සඳහාද සහාය දක්වයි:

>>> del a[2:4]
>>> a
[0, 1, 4, 5, 6, 7, 8, 9]

මෙන්න නිබන්ධනයේ කොටස.


53
ස්තූතියි, පොප් සහ ඩෙල් අතර ඇති වෙනස කුමක්ද?
ජොආන් වෙන්ජ්

37
ඩෙල් අධික ලෙස පටවා ඇත. උදාහරණයක් ලෙස ඩෙල් විසින් මුළු ලැයිස්තුවම මකා දමයි
බ්‍රයන් ආර්. බොන්ඩි

34
තවත් උදාහරණයක් ඩෙල් a [2: 4], 2 සහ 3 මූලද්‍රව්‍ය මකා දමයි
බ්‍රයන් ආර්. බොන්ඩි

308
pop () ඔබට ඉවත් කිරීමට අවශ්‍ය අංගය නැවත ලබා දෙයි. ඩෙල් යන්තම් මකා දමයි.

13
"සම්බන්ධිත ලැයිස්තුව" පිළිබඳ සාක්ෂියක් එහි මට නොපෙනේ. Svn.python.org/projects/python/trunk/Objects/listobject.c බලන්න PyList_GetItem()අත්‍යවශ්‍යයෙන්ම නැවත පැමිණෙන්නේ කෙසේද ((PyListObject *)op) -> ob_item[i];- අරාවෙහි තුන්වනi අංගය.
glglgl

656

ඔබට බොහෝ විට අවශ්‍ය වන්නේ pop:

a = ['a', 'b', 'c', 'd']
a.pop(1)

# now a is ['a', 'c', 'd']

පෙරනිමියෙන්, popකිසිදු තර්කයකින් තොරව අවසාන අයිතමය ඉවත් කරයි:

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

# now a is ['a', 'b', 'c']

105
පොප් (-1) අමතක නොකරන්න. ඔව්, එය පෙරනිමිය, නමුත් මම එයට කැමතියි ඒ නිසා පෙරනිමියෙන් කුමන අන්ත පොප් භාවිතා කරනවාද යන්න මතක තබා ගත යුතු නැත.
එස්.ලොට්

285
මම එකඟවෙන්නේ නැහැ. ක්‍රමලේඛකයාගේ “පොප්” යන ව්‍යුත්පන්නය ඔබ දන්නේ නම් (එය 'ස්ටක්' දත්ත ව්‍යුහයක මුදුන ඉවත් කර ආපසු ලබා දෙන මෙහෙයුමයි ), එවිට pop()එයම ඉතා පැහැදිලිව පෙනෙන අතර එය අතිරික්තයක් නිසාpop(-1) හරියටම ව්‍යාකූල විය හැකිය .
coredumperror

a.pop (-1) අන්තිම එක ඉවත් කිරීමට?
zx1986

14
program zx1986 a popබොහෝ ක්‍රමලේඛන භාෂාවල සාමාන්‍යයෙන් පයිතන්හි මෙන් අවසාන අයිතමය ඉවත් කරයි. එබැවින් ඔබ -1 හෝ කිසිවක් සඳහන් කළත් එය සමාන නොවේ.
පැස්කල්

30
මාර්ගය වන විට, pop()එය ඉවත් කළ ඕනෑම අංගයක් ආපසු ලබා දේ.
බොබ් ස්ටයින්

142

අනෙක් අය වගේ පොප් සඳහන් කර ඇති අතර ඩෙල් වේ ලබා දී දර්ශකයේ අයිතමය ඉවත් කිරීමට කාර්යක්ෂම ක්රම. එහෙත් සම්පූර්ණ කිරීම සඳහා (පයිතන්හි එකම දේ බොහෝ ආකාරවලින් කළ හැකි බැවින්):

පෙති භාවිතා කිරීම (මෙය මුල් ලැයිස්තුවෙන් අයිතමය ඉවත් කිරීම සිදු නොකරයි):

(එසේම මෙය පයිතන් ලැයිස්තුව සමඟ වැඩ කිරීමේදී අවම කාර්යක්ෂම ක්‍රමයක් වනු ඇත, නමුත් පොප් සඳහා සහය නොදක්වන පරිශීලක අර්ථ දක්වන ලද වස්තූන් සමඟ වැඩ කිරීමේදී මෙය ප්‍රයෝජනවත් විය හැකිය (නමුත් කාර්යක්ෂම නොවේ, මම නැවත අවධාරණය කරමි __getitem__): a යන්න අර්ථ දක්වන්න ):

>>> a = [1, 2, 3, 4, 5, 6]
>>> index = 3 # Only positive index

>>> a = a[:index] + a[index+1 :]
# a is now [1, 2, 3, 5, 6]

සටහන: මෙම ක්‍රමය මඟින් ලැයිස්තුවේ popසහ වැනි ස්ථාන වෙනස් නොකරන බව කරුණාවෙන් සලකන්න del. එය ඒ වෙනුවට ලැයිස්තු පිටපත් දෙකක් සාදයි (එකක් ආරම්භයේ සිට දර්ශකය දක්වා නමුත් එය නොමැතිව ( a[:index]) සහ දර්ශකයෙන් පසු අවසාන මූලද්‍රව්‍යය ( a[index+1:]) දක්වා) සහ දෙකම එකතු කිරීමෙන් නව ලැයිස්තු වස්තුවක් නිර්මාණය කරයි. මෙය පසුව ලැයිස්තු විචල්‍යයට ( a) නැවත පවරනු ලැබේ . එබැවින් පැරණි ලැයිස්තු වස්තුව අවලංගු කර ඇති අතර එම නිසා කසළ එකතු කරනු ලැබේ (මුල් ලැයිස්තු වස්තුව a හැර වෙනත් විචල්‍යයකින් සඳහන් නොවේ නම්).

මෙම ක්‍රමය ඉතා අකාර්යක්ෂම වන අතර එයට අනවශ්‍ය අතුරු ආබාධ ඇති කළ හැකිය (විශේෂයෙන් වෙනත් විචල්‍යයන් වෙනස් නොකළ මුල් ලැයිස්තු වස්තුව වෙත යොමු කරන විට).

මෙය පෙන්වා දීම ගැන ark මාක් ඩිකින්සන්ට ස්තූතියි ...

මෙම සිරස් පිටාර ගැලීමේ පිළිතුර පෙති කැපීමේ සංකල්පය පැහැදිලි කරයි.

මෙය ක්‍රියාත්මක වන්නේ ධනාත්මක දර්ශක සමඟ පමණක් බව සලකන්න.

වස්තූන් සමඟ භාවිතා කරන අතරතුර, __getitem__ක්‍රමය නිර්වචනය කර තිබිය යුතු අතර වඩා වැදගත් __add__වන්නේ ඔපෙරන්ඩ් දෙකෙන්ම අයිතම අඩංගු වස්තුවක් ආපසු ලබා දීම සඳහා ක්‍රමය නිර්වචනය කර තිබිය යුතුය.

සාරාංශයක් ලෙස, මෙය පන්ති අර්ථ දැක්වීම වැනි ඕනෑම වස්තුවක් සමඟ ක්‍රියා කරයි:

class foo(object):
    def __init__(self, items):
        self.items = items

    def __getitem__(self, index):
        return foo(self.items[index])

    def __add__(self, right):
        return foo( self.items + right.items )

මෙය listනිර්වචනය __getitem__හා __add__ක්‍රම සමඟ ක්‍රියා කරයි .

කාර්යක්ෂමතාව අනුව ක්‍රම තුන සංසන්දනය කිරීම:

පහත සඳහන් දේ පූර්ව නිශ්චිත යැයි උපකල්පනය කරන්න:

a = range(10)
index = 3

මෙම del object[index]ක්රමය:

වඩාත්ම කාර්යක්ෂම ක්රමය. එය ක්‍රියාත්මක වන්නේ __del__ක්‍රමයක් නිර්වචනය කරන සියලුම වස්තූන් ය .

විසුරුවා හැරීම පහත පරිදි වේ:

කේතය:

def del_method():
    global a
    global index
    del a[index]

විසුරුවා හැරීම:

 10    0 LOAD_GLOBAL     0 (a)
       3 LOAD_GLOBAL     1 (index)
       6 DELETE_SUBSCR   # This is the line that deletes the item
       7 LOAD_CONST      0 (None)
      10 RETURN_VALUE
None

pop ක්‍රමය:

එය ඩෙල් ක්‍රමයට වඩා අඩු කාර්යක්ෂමතාවයක් ඇති අතර ඔබට මකාදැමූ අයිතමය ලබා ගැනීමට අවශ්‍ය වූ විට භාවිතා වේ.

කේතය:

def pop_method():
    global a
    global index
    a.pop(index)

විසුරුවා හැරීම:

 17     0 LOAD_GLOBAL     0 (a)
        3 LOAD_ATTR       1 (pop)
        6 LOAD_GLOBAL     2 (index)
        9 CALL_FUNCTION   1
       12 POP_TOP
       13 LOAD_CONST      0 (None)
       16 RETURN_VALUE

පෙත්ත සහ එකතු කිරීමේ ක්රමය.

අවම කාර්යක්ෂමතාව.

කේතය:

def slice_method():
    global a
    global index
    a = a[:index] + a[index+1:]

විසුරුවා හැරීම:

 24     0 LOAD_GLOBAL    0 (a)
        3 LOAD_GLOBAL    1 (index)
        6 SLICE+2
        7 LOAD_GLOBAL    0 (a)
       10 LOAD_GLOBAL    1 (index)
       13 LOAD_CONST     1 (1)
       16 BINARY_ADD
       17 SLICE+1
       18 BINARY_ADD
       19 STORE_GLOBAL   0 (a)
       22 LOAD_CONST     0 (None)
       25 RETURN_VALUE
None

සටහන: විසුරුවා හැරීම් තුනේම මූලික වශයෙන් ඇති අවසාන පේළි දෙක නොසලකා හරින්න return None. පළමු පේළි දෙක ගෝලීය අගයන් පැටවීම aසහ index.


4
ඔබේ පෙති කපන ක්‍රමය ලැයිස්තුවකින් මූලද්‍රව්‍යයක් ඉවත් නොකරයි: ඒ වෙනුවට එය මුල් ලැයිස්තුවෙන් ith ඇතුළත් කිරීම හැර අනෙක් සියල්ල අඩංගු නව ලැයිස්තු වස්තුවක් නිර්මාණය කරයි . මුල් ලැයිස්තුව වෙනස් නොකෙරේ.
මාර්ක් ඩිකින්සන්

Ark මාක් ඩිකින්සන් එය පැහැදිලි කිරීම සඳහා පිළිතුර සංස්කරණය කර තිබේද ... කරුණාකර එය දැන් හොඳදැයි මට දන්වන්න?
රාගව් ආර්වී

6
සමහර විට පිළිතුර මුළුමනින්ම මාතෘකාව මත නොතිබුණි, නමුත් ඔබට ටුපල් වැනි වෙනස් කළ නොහැකි වස්තුවකින් අයිතමයක් මඟ හැරීමට අවශ්‍ය නම් සුචිගත කිරීමේ ක්‍රමය ප්‍රයෝජනවත් වේ. pop () සහ del () එම අවස්ථාවේදී ක්‍රියා නොකරනු ඇත.
කාලෙබ්

6
post rvraghav93 මුළු තනතුර තුළම ඉදිරිපත් කරන ලද සියලුම ක්‍රම a = a[:index] + a[index+1 :]අතුරින්, විශාල ලැයිස්තුවක් ගත් විට -ට්‍රික් යනු වඩාත්ම සුරක්‍ෂිතයි. අනෙක් සියලුම ක්‍රම අවසන් වූයේ අවහිරයකිනි. ඉතින් ඔබට බොහෝම ස්තූතියි
user3085931

3
ඇත්ත වශයෙන්ම මාර්ක්, ඔබ තරහයි. මෙම පිළිතුර මා වඩාත් කැමති වූයේ එය සැබවින්ම අධ්‍යාපනික බැවිනි. මෙම පිළිතුරෙන් සහ සපයන ලද විසුරුවා හැරීමේ තොරතුරු සහ කාර්ය සාධනය කෙරෙහි ඇති බලපෑමෙන් මම බොහෝ දේ ඉගෙන ගතිමි. ප්ලස් කැපීමේ ක්‍රමය, ඔව්, වෙනත් වස්තුවක් සාදන්න, නමුත් දැන් එය නිශ්චිතව දක්වා ඇති අතර සමහර විට එය ඔබට අවශ්‍ය දේ ද වේ.
යොහාන් ඔබදියා

53

popලැයිස්තුවකින් අයිතමයක් ඉවත් කිරීමට සහ තබා ගැනීමට ද ප්‍රයෝජනවත් වේ. කොහෙද delඇත්තටම අයිතමය trashes.

>>> x = [1, 2, 3, 4]

>>> p = x.pop(1)
>>> p
    2

24

2, 3 සහ 7 වැනි ලැයිස්තුවක නිශ්චිත ස්ථාන මූලද්‍රව්‍යය ඉවත් කිරීමට ඔබට අවශ්‍ය නම්. ඔබට භාවිතා කළ නොහැක

del my_list[2]
del my_list[3]
del my_list[7]

ඔබ දෙවන අංගය මකා දැමීමෙන් පසුව, ඔබ මකා දැමූ තුන්වන අංගය මුල් ලැයිස්තුවේ සිව්වන අංගය වේ. ඔබට මුල් ලැයිස්තුවේ 2, 3 සහ 7 වන අංග පෙරහන් කර පහත ලැයිස්තුවක් මෙන් නව ලැයිස්තුවක් ලබා ගත හැකිය:

new list = [j for i, j in enumerate(my_list) if i not in [2, 3, 7]]

19

මෙය ඔබට කිරීමට අවශ්‍ය දේ මත රඳා පවතී.

ඔබ ඉවත් කළ මූලද්රව්යය ආපසු ලබා දීමට අවශ්ය නම්, භාවිතා කරන්න pop() :

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

කෙසේ වෙතත්, ඔබට අංගයක් මකා දැමීමට අවශ්‍ය නම් භාවිතා කරන්න del :

>>> l = [1, 2, 3, 4, 5]
>>> del l[2]
>>> l
[1, 2, 4, 5]

ඊට අමතරව, delපෙති භාවිතා කිරීමට ඔබට ඉඩ සලසයි (උදා del[2:]).


18

සාමාන්යයෙන්, මම පහත ක්රමය භාවිතා කරමි:

>>> myList = [10,20,30,40,50]
>>> rmovIndxNo = 3
>>> del myList[rmovIndxNo]
>>> myList
[10, 20, 30, 50]

15

දර්ශක අනුව ලැයිස්තුවකින් මූලද්‍රව්‍යයක් ඉවත් කිරීමට තවත් ක්‍රමයක්.

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# remove the element at index 3
a[3:4] = []
# a is now [0, 1, 2, 4, 5, 6, 7, 8, 9]

# remove the elements from index 3 to index 6
a[3:7] = []
# a is now [0, 1, 2, 7, 8, 9]

a [x: y] දර්ශකයේ xසිට මූලද්‍රව්‍ය වෙත යොමු y-1කරයි. අපි ලැයිස්තුවේ එම කොටස හිස් ලැයිස්තුවක් ලෙස ප්‍රකාශ කරන විට ( []), එම මූලද්‍රව්‍ය ඉවත් කරනු ලැබේ.


14

ඔබට මැකීමට අවශ්‍ය අයිතමය සෙවිය හැකිය. එය ඇත්තෙන්ම සරලයි. උදාහරණයක්:

    letters = ["a", "b", "c", "d", "e"]
    letters.remove(letters[1])
    print(*letters) # Used with a * to make it unpack you don't have to (Python 3.x or newer)

නිමැවුම්: acde


6
මම මෙම විසඳුමට කැමතියි, නමුත් ඇත්ත වශයෙන්ම එය ඔබගේ ලැයිස්තුවේ අනුපිටපත් නොමැති බව උපකල්පනය කරයි.
tommy.carstensen

11

ලැයිස්තුවෙන් මූලද්රව්ය ඉවත් කිරීමට පහත කේතය භාවිතා කරන්න:

list = [1, 2, 3, 4]
list.remove(1)
print(list)

output = [2, 3, 4]

ලැයිස්තුවෙන් දර්ශක මූලද්‍රව්‍ය දත්ත ඉවත් කිරීමට ඔබට අවශ්‍ය නම්:

list = [1, 2, 3, 4]
list.remove(list[2])
print(list)
output : [1, 2, 4]

2
ඔබගේ ලැයිස්තුවේ අනුපිටපත් අඩංගු විය නොහැකි බවට වන අවවාදය සමඟ පැමිණේ.
tommy.carstensen

3
මෙය දර්ශකයෙන් ඉවත් කිරීම නොව ගැලපෙන අගයෙන් ඉවත් කිරීමකි. මෙහි පැමිණෙන සමහර පුද්ගලයින් සඳහා එය වටිනා තොරතුරු විය හැකි නමුත් OPs ප්‍රශ්නයට කිසිසේත් පිළිතුරු දීමට උත්සාහ නොකරයි.
ඇන්තන්

10

ලැයිස්තුවකින් තනි මූලද්‍රව්‍යයක් ඉවත් කරන්නේ කෙසේද යන්න සහ විවිධ ක්‍රමවලට ඇති වාසි මොනවාද යන්න දැනටමත් සඳහන් කර ඇත. කෙසේ වෙතත්, බහු මූලද්‍රව්‍ය ඉවත් කිරීම දෝෂ සඳහා යම් විභවයක් ඇති බව සලකන්න :

>>> l = [0,1,2,3,4,5,6,7,8,9]
>>> indices=[3,7]
>>> for i in indices:
...     del l[i]
... 
>>> l
[0, 1, 2, 4, 5, 6, 7, 9]

මුල් ලැයිස්තුවේ 3 සහ 8 (3 සහ 7 නොවේ) මූලද්‍රව්‍ය ඉවත් කර ඇත (ලූපය අතරතුර ලැයිස්තුව කෙටි කළ පරිදි), එය අභිප්‍රාය නොවිය හැකිය. ඔබට බහු දර්ශක ආරක්ෂිතව ඉවත් කිරීමට අවශ්‍ය නම්, ඒ වෙනුවට පළමුව ඉහළම දර්ශකය සහිත මූලද්‍රව්‍ය මකා දැමිය යුතුය, උදා:

>>> l = [0,1,2,3,4,5,6,7,8,9]
>>> indices=[3,7]
>>> for i in sorted(indices, reverse=True):
...     del l[i]
... 
>>> l
[0, 1, 2, 4, 5, 6, 8, 9]

9

l - සාරධර්ම ලැයිස්තුව; අපට inds2rem ලැයිස්තුවෙන් දර්ශක ඉවත් කළ යුතුය .

l = range(20)
inds2rem = [2,5,1,7]
map(lambda x: l.pop(x), sorted(inds2rem, key = lambda x:-x))

>>> l
[0, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

වැඩ කරන්නේ නැහැ, පිළිතුර <map at 0x7f4d54109a58>. හා මම පරාසය (0,20) වේ
Hitesh

8

කලින් සඳහන් කළ පරිදි, හොඳම පුහුණුව ඩෙල් (); හෝ අගය දැන ගැනීමට අවශ්‍ය නම් පොප් () කරන්න.

විකල්ප විසඳුමක් නම් ඔබට අවශ්‍ය මූලද්‍රව්‍ය පමණක් නැවත ගොඩගැසීමයි:

    a = ['a', 'b', 'c', 'd'] 

    def remove_element(list_,index_):
        clipboard = []
        for i in range(len(list_)):
            if i is not index_:
                clipboard.append(list_[i])
        return clipboard

    print(remove_element(a,2))

    >> ['a', 'b', 'd']

eta: hmm ... negative ණ දර්ශක අගයන් මත ක්‍රියා නොකරනු ඇත, මෙනෙහි කර යාවත්කාලීන කරනු ඇත

මම සිතනවා

if index_<0:index_=len(list_)+index_

නමුත් එය හදිසියේම මෙම අදහස ඉතා අස්ථාවර බවක් පෙනේ. සිත්ගන්නාසුලු චින්තන අත්හදා බැලීමක් වුවද. උපග්‍රන්ථ () / ලැයිස්තු අවබෝධය සමඟ මෙය කිරීමට 'නිසි' ක්‍රමයක් තිබිය යුතු බව පෙනේ.

මෙනෙහි කිරීම


1
ශ්‍රිතයක් ඇති පයිතන්ගේ කුමන අනුවාදයද del()? එම ශ්‍රිතය සඳහා ඔබ එම ශ්‍රිතයට පළමු තර්කය ලෙස ලැයිස්තුව ලබා දෙන අතර පසුව දර්ශකයද, නැතහොත් දර්ශකය පළමුවද පසුව ලැයිස්තුවද? එය අයිතමය නොමැතිව ලැයිස්තු තර්කය නැවත ලබා දෙයිද, නැතහොත් එය මකාදැමීම සිදු කරයිද? delප්‍රකාශය ගැන මම දනිමි , නමුත් එකම නමක් ඇති ශ්‍රිතයක් ගැන නොවේ.
ඇන්තන්

8

ඔබ ලැයිස්තු ලැයිස්තුවක් සමඟ වැඩ කරන බවක් නොපෙනේ, එබැවින් මම මෙය කෙටියෙන් තබමි. ඔබට පොප් භාවිතා කිරීමට අවශ්‍ය වන්නේ එය ලැයිස්තුගත කර ඇති මූලද්‍රව්‍ය නොව මූලද්‍රව්‍ය ඉවත් කරන බැවිනි, ඒ සඳහා ඔබ ඩෙල් භාවිතා කළ යුතුය. පයිතන් හි අවසාන අංගය ඇමතීමට එය "-1"

>>> test = ['item1', 'item2']
>>> test.pop(-1)
'item2'
>>> test
['item1']

1
pop()සහ delදෙකම සපයන ලද දර්ශකයේ මූලද්‍රව්‍යයක් ඉවත් කරයි, එම මූලද්‍රව්‍යය ලැයිස්තුවක් ද නැද්ද යන්න ස්වාධීනව. a = [1, [2, 3], 4]; del a[1]; b = [1, [2, 3], 4]; b.pop(1); assert a == b
ඇන්තන්

7

"ඩෙල්" ශ්‍රිතය භාවිතා කරන්න :

del listName[-N]

උදාහරණයක් ලෙස, ඔබට අවසාන අයිතම 3 ඉවත් කිරීමට අවශ්‍ය නම්, ඔබේ කේතය විය යුත්තේ:

del listName[-3:]

උදාහරණයක් ලෙස, ඔබට අවසන් අයිතම 8 ඉවත් කිරීමට අවශ්‍ය නම්, ඔබේ කේතය විය යුත්තේ:

del listName[-8:]

2
delයනු ප්රකාශයක් . එය ශ්‍රිතයක් නම්, ඔබට ලිවීමට සිදුවේdel(listame[-N])
ඇන්තන්

3

දර්ශකය මත පදනම්ව ලැයිස්තුවෙන් මූලද්‍රව්‍යය ඉවත් කිරීමට ඔබට ඩෙල් හෝ පොප් භාවිතා කළ හැකිය. පොප් විසින් එය ලැයිස්තුවෙන් ඉවත් කරන සාමාජිකයා මුද්‍රණය කරන අතර ලැයිස්තුව එම සාමාජිකයා මුද්‍රණය නොකර මකා දමයි.

>>> a=[1,2,3,4,5]
>>> del a[1]
>>> a
[1, 3, 4, 5]
>>> a.pop(1)
 3
>>> a
[1, 4, 5]
>>> 

3

කෙනෙකුට ඩෙල් හෝ පොප් භාවිතා කළ හැකිය, නමුත් මම ඩෙල්ට කැමතියි, ඔබට දර්ශකය සහ පෙති නියම කළ හැකි බැවින් පරිශීලකයාට දත්ත මත වැඩි පාලනයක් ලබා දේ.

නිදසුනක් ලෙස, පෙන්වා ඇති ලැයිස්තුවෙන් පටන් ගෙන, කෙනෙකුට එහි අවසාන අංගය delපෙත්තක් ලෙස ඉවත් කළ හැකි අතර, පසුව කෙනෙකුට අවසාන අංගය ප්‍රති result ලයෙන් ඉවත් කළ හැකිය pop.

>>> l = [1,2,3,4,5]
>>> del l[-1:]
>>> l
[1, 2, 3, 4]
>>> l.pop(-1)
4
>>> l
[1, 2, 3]

3

හෝ බහු දර්ශක ඉවත් කළ යුතු නම්:

print([v for i,v in enumerate(your_list) if i not in list_of_unwanted_indexes])

ඇත්ත වශයෙන්ම එවිට ද කළ හැකිය:

print([v for i,v in enumerate(your_list) if i != unwanted_index])

1
ඔබ දර්ශක ලැයිස්තුව ප්‍රතිලෝම අනුපිළිවෙලට වර්ග කර ඒවා එකින් එක මකා නොදමන්නේ ඇයි? ඒ ආකාරයෙන් ඔබ නව ලැයිස්තුවක් සෑදිය යුතු නැත.
ඇන්තන්

-2

ඔබට .pop () ක්‍රමය භාවිතා කළ හැකිය

පොප් () ක්‍රමය මූලික වශයෙන් කරන්නේ එය ලැයිස්තුවෙන් අවසාන අංගය මකා දැමීමයි.

එය විකල්පයක් වන තර්කයක් ලෙස දර්ශකයේ නම ගනී.

වැඩි විස්තර සඳහා ලියකියවිලි කිහිපයක් බලන්න - https://www.geeksforgeeks.org/python-list-pop/#:~:text=Python%20list%20%7C%20pop(),or%20the%20given%20index%20value .


මෙම පිළිතුර පැරණි පිළිතුරු වලට අලුත් දෙයක් එකතු කරන්නේ කෙසේදැයි මම නොදනිමි. මෙහි තවමත් සඳහන් කර නොමැති සබැඳියෙන් ප්‍රයෝජනවත් යමක් තිබේ නම්, එය පිළිතුරට කෙලින්ම ඇතුළත් කළ යුතුය.
ජෝර්ජි
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.