簡體   English   中英

過濾列表並打印 Python 中過濾列表中的第三個值

[英]Filtering a list and the printing the 3rd value in the filtered list in Python

這感覺像是一件非常基本的事情,但我已經為此苦苦掙扎了好幾個小時。

我有一個包含值的列表。 我想過濾該列表,只留下其中包含“a”的值。 然后從該列表中我想打印第三個值。 出於某種我不明白的原因,它不起作用。

幫助表示贊賞! 謝謝!

mylist = ['plane','dog','car','planet','mat']

mylist_words_with_a = filter(lambda word: 'a' in word, mylist)

third_of_mylist_with_a = mylist_words_with_a[2]

print(third_of_mylist_with_a)

您可以使用filter過濾帶有“a”的元素。 我在這里使用set方法來檢查包含。 然后使用islice獲取filter生成器的第 n 個元素。 這可以在您獲得所需元素后立即停止(假設您有 1000 個元素,一旦找到包含 a 的第三個元素,就無需評估剩余元素):

mylist = ['plane','dog','car','planet','mat']

from itertools import islice
next(islice(filter({'a'}.issubset, mylist), 2, 3))

output: 'planet'

filter返回一個可迭代的。 因此,您需要將內容包裝到一個列表中以使過濾器實際執行並使用[]運算符訪問第三個元素。

mylist = ['plane','dog','car','planet','mat']

mylist_words_with_a = filter(lambda word: 'a' in word, mylist)

third_of_mylist_with_a = list(mylist_words_with_a)[2]

print(third_of_mylist_with_a)

或者,您可以使用itertools.islice()來避免整個列表被過濾並復制到其他列表中。 如果源列表是一個大數據集,最好使用迭代器,以提高性能並避免不必要的 memory 分配。

import itertools

mylist = ['plane','dog','car','planet','mat']

mylist_words_with_a = filter(lambda word: 'a' in word, mylist)

third_of_mylist_with_a = next(itertools.islice(mylist_words_with_a, 2, 3))

print(third_of_mylist_with_a)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM