web-dev-qa-db-ja.com

Python:リストのリストを別のリストでフィルタリングする

リストをフィルターしようとしています。リストA(リストのリスト)から抽出します。キーインデックス0に一致する要素と、一連の値を持つ別のリストBを抽出します。

このような

list_a = list(
  list(1, ...),
  list(5, ...),
  list(8, ...),
  list(14, ...)
)

list_b = list(5, 8)

return filter(lambda list_a: list_a[0] in list_b, list_a)

返す必要があります:

list(
    list(5, ...),
    list(8, ...)
)

これどうやってするの?ありがとう!

16
fj123x

リスト内包表記を使用します。

_result = [x for x in list_a if x[0] in list_b]
_

パフォーマンスを向上させるには、最初に_list_b_をセットに変換します。

@kevinがコメントで述べたように、list(5,8)(疑似コードでない限り)などは無効であり、エラーが発生します。

list()は1つのアイテムのみを受け入れ、そのアイテムは反復可能/イテレータである必要があります

23

あなたは実際には非常に近いです。これを行うだけです:

list_a = list(
  list(1, ...),
  list(5, ...),
  list(8, ...),
  list(14, ...)
)

# Fix the syntax here
list_b = [5, 8]

return filter(lambda list_a: list_a[0] in list_b, list_a)
2
user2555451