21

リストをフィルタリングしようとしています。リスト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, ...)
)

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

4

2 に答える 2

33

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

result = [x for x in list_a if x[0] in list_b]

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

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

list()1 つのアイテムのみを受け入れ、そのアイテムは iterable/iterator である必要があります

于 2013-08-26T16:17:55.143 に答える
3

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

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)
于 2013-08-26T18:27:09.873 に答える