4
我試圖將名稱爲< 2000的書名複製到新列表中。但我遇到的問題是,它僅複製「1984」,並將其複製它作爲一個個性到列表中,而不是複製所有它的應該從namedtuple屬性創建新列表
from collections import namedtuple
Book = namedtuple('Book','author title genre year price instock')
BSI = [ Book('John Green', 'Paper Towns', 'Young Adult', 2008, 7.00, 200),
Book('Beverly Clearly', 'Ramona Forever', 'Children', 1924, 9.00, 150),
Book('Vladmir Nabokov', 'Lolita', 'Tragicomedy', 1958, 15.00 , 80),
Book('J.D. Salinger', 'Catcher in the Rye', 'Young Adult', 1951, 10.00, 130),
Book('George Orwell', '1984', 'Dystopia', 1949, 7.00, 300),
Book('Jeannette Walls','The Glass Castle','Memoir', 2006, 15.00 , 100)]
older_books = []
for books in BSI:
if (books.year<2000):
older_books=list(books.title)
print(older_books) #Outputs ['1', '9', '8', '4']
它應該輸出
名稱拉馬納永遠
洛麗塔
麥田捕手
另外,這個問題可以通過列表理解得到很好的處理:'old_books = [b.title for b in BSI if b.year <2000]' – mtrw
@mtrw,感謝您的評論。我相應地添加了另一種解決方案。 – falsetru