リストAからリストBを削除する
ラムダ式を使っている。
listA = [2, 3, 4, 5, 6]
listB = [3, 4, 5]
listA = list(filter(lambda x:x not in listB, listA))
print(listA)
# [2, 6]
リストAとリストBの共通する値を抽出する
listA = [2, 3, 4, 5, 6]
listB = [1, 3, 4, 5, 7]
listA = list(filter(lambda x:x in listB, listA))
print(listA)
# [3, 4, 5]
リスト内の重複を解消する
set()を使う。元のリストの順序は保持されない。
listA = [3, 3, 2, 1, 5, 1, 4, 2, 3]
print(list(set(listA)))
# [1, 2, 3, 4, 5]
順序を保持する場合はdict.fromkeys()を使う。
listA = [3, 3, 2, 1, 5, 1, 4, 2, 3]
print(list(dict.fromkeys(listA)))
# [3, 2, 1, 5, 4]
リストAとリストBの内容が重複しているか判定する
import collections
compare = lambda x, y: collections.Counter(x) == collections.Counter(y)
print(compare([1,3,2], [1,2,3]))
#True
一部を抜き出す
スライスという機能を使う。
# 最初の3つのみのリストにする
list = [2, 4, 6, 8, 9]
list = list[:3]
print(list)
# [2, 4, 6]
# 最初の3つを消す
list = [2, 4, 6, 8, 9]
list = list[3:]
print(list)
# [8, 9]
リスト内にリストを挿入する
リストの中にリストを入れることが出来る。
list = [1, 2]
list.append([3, 4, 5])
print(list)
# 結果:
# [1, 2, [3, 4, 5]]
こんな感じで挿入もできる。
list = [1, 2]
list[1] = [3, 4, 5]
print(list)
# 結果:
# [1, [3, 4, 5]]
リストを追加していけば多次元配列のように扱うこともできる。
list = []
for i in range(5):
list.append([i, i+1, i+2])
print(list)
# 結果:
# [[0, 1, 2], [1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]]
print(list[1][2])
# 結果:
# 3
負のインデックス
マイナスを入れると最後尾から数えた要素を指定することになる。
list = [2, 3, 4, 5, 6, 7]
print(list[-1])
# 結果:
# 7
リストをシフトする
指定した数だけずらす。
def leftShiftIndex(arr, n):
result = arr[n:] + arr[:n]
return result
list = [1, 2, 3, 4, 5, 6, 7, 8]
list = leftShiftIndex(list, 3)
print(list)
# [4, 5, 6, 7, 8, 1, 2, 3]
シフトする関数を使っています。