リスト要素の削除

ソースコード
    #coding:utf-8
#リストの浅いコピーと深いコピー: copy(), deepcopy()
import copy

l = [0, 1, [2, 3]]
l_assign = l                   # assignment
l_copy = l.copy()              # shallow copy
l_deepcopy = copy.deepcopy(l)  # deep copy
# 多種
l[1] = 100
l[2][0] = 200
print(l)
# [0, 100, [200, 3]]

print(l_assign)
# [0, 100, [200, 3]]

print(l_copy)
# [0, 1, [200, 3]]

print(l_deepcopy)
# [0, 1, [2, 3]]


a = ["apple","banana","kiwi","orange"]
b = a 
# 代入
c = a.copy() 
d = copy.deepcopy(a)
print(a,b,c,d)
a[2] = "バナナ"
print(a,b,c,d)
#リストスライス
fruits = ["apple","banana","kiwi","orange"]
print(fruits)
print(fruits[2:])
print(fruits[:3])

# リスト内
base = [1,2,3,4]
new = [i*2 for i in base]
print(new)

# リスト 要素の削除 clear pop remove del 
# 2 種類のリスト:棚 stack FILO Frist In Lat Out
# FCLS Frist Come Last Service
import random

stack = []
for i in range (10):
    stack.append(random.randint(2,50))
print(stack)

result=0
for i in range (10):
    result += stack.pop()
print(f'総和= {result}')
print(stack)

# 待ち行列 QUEUE:FIFO First IN First Out 
# FCLS First Come Last Service
queue = []
for i in range(4):
    name = input("お名前は : ")
    queue.append(name)
print(queue)

for i in range(4):
    call = queue.pop(0)
    print(call)

#すべての要素を削除: clear()
l = [0, 1, 2]

l.clear()
print(l)
# []


#指定した位置の要素を削除し、値を取得: pop()
l = [0, 10, 20, 30, 40, 50]

popped_item = l.pop(0)
print(popped_item)
# 0

print(l)
# [10, 20, 30, 40, 50]

popped_item = l.pop(3)
print(popped_item)
# 40

print(l)
# [10, 20, 30, 50]

popped_item = l.pop(-2)
print(popped_item)
# 30

print(l)
# [10, 20, 50]
popped_item = l.pop()
print(popped_item)
# 50

print(l)
# [10, 20]



#指定した値と同じ要素を検索し、最初の要素を削除: remove()
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']

l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']

#インデックス・スライスで位置・範囲を指定して削除: del
l = [0, 10, 20, 30, 40, 50]

del l[0]
print(l)
# [10, 20, 30, 40, 50]

del l[3]
print(l)
# [10, 20, 30, 50]

del l[-1]
print(l)
# [10, 20, 30]

del l[-2]
print(l)
# [10, 30]

#スライスで範囲を指定すると、複数の要素を一括で削除できる。
l = [0, 10, 20, 30, 40, 50]
del l[2:5]
print(l)
# [0, 10, 50]

l = [0, 10, 20, 30, 40, 50]
del l[:3]
print(l)
# [30, 40, 50]

l = [0, 10, 20, 30, 40, 50]
del l[-2:]
print(l)
# [0, 10, 20, 30]

#全範囲を指定してすべての要素を削除する
l = [0, 10, 20, 30, 40, 50]
del l[:]
print(l)
# []

#スライスでの範囲指定を[start:stop:step]として増分stepを指定すると、飛び飛びの複数の要素を一括で削除できる。
l = [0, 10, 20, 30, 40, 50]
del l[::2]
print(l)
# [10, 30, 50]

#条件を満たす複数の要素を一括で削除: リスト内包表記
l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

evens = [i for i in l if i % 2 == 0]
print(evens)
# [0, 2, 4, 6, 8]

odds = [i for i in l if i % 2 != 0]
print(odds)
# [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)))
# ['Alice', 'Charlie', 'David', 'Bob']
        
実行結果