Pythonでのリスト操作

リスト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]

シフトする関数を使っています。

タイトルとURLをコピーしました