Каб выдаліць элемент са спісу (масіва) тыпу list у Python, выкарыстоўвайце метады спісу clear(), pop() і remove(). Вы таксама можаце вызначыць пазіцыю і дыяпазон спісу, выкарыстоўваючы індэкс або зрэз, а затым выдаліць яго з дапамогай аператара del.
Тут прадстаўлена наступная інфармацыя.
- Выдаліце ўсе элементы:
clear()
- Выдаліце элемент у паказанай пазіцыі і атрымаеце яго значэнне.:
pop()
- Шукае элементы з зададзеным значэннем і выдаляе першы элемент.:
remove()
- Выдаленне шляхам указання пазіцыі і дыяпазону ў індэксным зрэзе:
del
- Пакетнае выдаленне некалькіх элементаў, якія адпавядаюць крытэрам.:паказанне ўключэння ў спіс
Звярніце ўвагу, што спісы могуць захоўваць даныя розных тыпаў і строга адрозніваюцца ад масіваў. Выкарыстоўвайце масіў (стандартная бібліятэка) або NumPy, калі вы хочаце апрацоўваць масівы для працэсаў, якія патрабуюць памеру памяці або адраса памяці, або для лікавых вылічэнняў буйнамаштабных даных.
- Выдаліце ўсе элементы:clear()
- Выдаліце элемент у паказанай пазіцыі і атрымаеце яго значэнне.:pop()
- Шукае элементы з зададзеным значэннем і выдаляе першы элемент.:remove()
- Выдаленне шляхам указання пазіцыі і дыяпазону ў індэксным зрэзе:del
- Пакетнае выдаленне некалькіх элементаў, якія адпавядаюць крытэрам.:паказанне ўключэння ў спіс
Выдаліце ўсе элементы:clear()
У метадзе спісу clear() усе элементы выдаляюцца, у выніку чаго спіс застаецца пустым.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l.clear()
print(l)
# []
Выдаліце элемент у паказанай пазіцыі і атрымаеце яго значэнне.:pop()
Метад pop() спісу можна выкарыстоўваць, каб выдаліць элемент у зададзенай пазіцыі і атрымаць значэнне гэтага элемента.
Першы (пачатковы) лік роўны 0.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l.pop(0))
# 0
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l.pop(3))
# 4
print(l)
# [1, 2, 3, 5, 6, 7, 8, 9]
Адмоўнае значэнне таксама можа быць выкарыстана для ўказання пазіцыі з канца (апошняга). Канец (апошні) -1.
print(l.pop(-2))
# 8
print(l)
# [1, 2, 3, 5, 6, 7, 9]
Калі аргумент апушчаны і пазіцыя не вызначана, элемент у канцы (апошні) выдаляецца.
print(l.pop())
# 9
print(l)
# [1, 2, 3, 5, 6, 7]
Указанне неіснуючай пазіцыі прывядзе да памылкі.
# print(l.pop(100))
# IndexError: pop index out of range
Звярніце ўвагу, што pop(0), які выдаляе першы элемент, патрабуе наступных выдаткаў і не з’яўляецца эфектыўнай аперацыяй. Вылічальную складанасць розных аперацый са спісамі глядзіце на наступнай старонцы афіцыйнай вікі.O(n)
O(1)
Тып deque прадастаўляецца ў модулі стандартных бібліятэчных калекцый як тып, які выдаляе элементы зверху за гэты кошт. Напрыклад, калі вы хочаце разглядаць дадзеныя як чаргу (FIFO), больш эфектыўна выкарыстоўваць deque.
Шукае элементы з зададзеным значэннем і выдаляе першы элемент.:remove()
Метад спісу remove() можа быць выкарыстаны для пошуку элементаў з такім жа значэннем, што і пазначана, і выдалення першага элемента.
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']
Калі спіс змяшчае больш за адзін элемент, які адпавядае зададзенаму значэнню, будзе выдалены толькі першы.
l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']
Калі зададзена неіснуючае значэнне, узнікае памылка.
# l.remove('xxx')
# ValueError: list.remove(x): x not in list
Выдаленне шляхам указання пазіцыі і дыяпазону ў індэксным зрэзе:del
Вы таксама можаце выкарыстоўваць аператар del для выдалення элементаў са спісу.
Пакажыце элемент, які трэба выдаліць, па яго індэксе. Першы (пачатковы) індэкс роўны 0, а апошні (канчатковы) -1.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del l[0]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
del l[-1]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8]
del l[6]
print(l)
# [1, 2, 3, 4, 5, 6, 8]
Калі вы задасце дыяпазон з лустачкамі, вы можаце выдаліць некалькі элементаў адначасова.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del l[2:5]
print(l)
# [0, 1, 5, 6, 7, 8, 9]
l = list(range(10))
del l[:3]
print(l)
# [3, 4, 5, 6, 7, 8, 9]
l = list(range(10))
del l[4:]
print(l)
# [0, 1, 2, 3]
l = list(range(10))
del l[-3:]
print(l)
# [0, 1, 2, 3, 4, 5, 6]
Таксама можна паказаць увесь дыяпазон і выдаліць усе элементы.
l = list(range(10))
del l[:]
print(l)
# []
[start:stop:step]
Калі вы задасце дыяпазон у зрэзе такім чынам і задасце крок нарастання, вы можаце выдаліць некалькі элементаў скачка адначасова.
l = list(range(10))
del l[2:8:2]
print(l)
# [0, 1, 3, 5, 7, 8, 9]
l = list(range(10))
del l[::3]
print(l)
# [1, 2, 4, 5, 7, 8]
Больш падрабязную інфармацыю аб нарэзцы глядзіце ў наступным артыкуле.
Пакетнае выдаленне некалькіх элементаў, якія адпавядаюць крытэрам.:паказанне ўключэння ў спіс
Працэс выдалення элементаў, якія задавальняюць умовам, эквівалентны працэсу пакідання (здабывання) элементаў, якія не задавальняюць умовам. Для гэтага віду апрацоўкі выкарыстоўваецца абазначэнне разумення спісу.
- Падобныя артыкулы:Выкарыстанне абазначэння разумення спісу Python
Прыклад выдалення няцотных або цотных элементаў (= пакіданне цотных або няцотных элементаў) паказаны ніжэй.%
Гэта аператар рэшты.i % 2
Гэта астатняя частка i падзелена на 2.
У запісе для разумення спісу ствараецца новы спіс. У адрозненне ад метадаў тыпу спісу, уведзеных да гэтага часу, першапачатковы спіс застаецца нязменным.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print([i for i in l if i % 2 == 0])
# [0, 2, 4, 6, 8]
print([i for i in l if i % 2 != 0])
# [1, 3, 5, 7, 9]
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Іншыя прыклады. У залежнасці ад умоўнага выразу магчымая разнастайная апрацоўка.
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print([s for s in l if s != 'Bob'])
# ['Alice', 'Charlie', 'David']
print([s for s in l if s.endswith('e')])
# ['Alice', 'Charlie']
Калі вы хочаце выдаліць паўтаральныя элементы, выкарыстоўвайце тып набора.
print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']