python – 从namedtuple属性创建新列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 从namedtuple属性创建新列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1450字,纯文字阅读大概需要3分钟。
内容图文
![python – 从namedtuple属性创建新列表](/upload/InfoBanner/zyjiaocheng/788/b4696d5862754a5594c3f94901f00df1.jpg)
我正在尝试将< 2000的书名复制到新列表中.但我遇到的问题是它只复制“1984”并将其作为单个字符复制到列表而不是复制它应该的所有名称
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']
它应该输出什么
Ramona Forever
Lolita
Catcher in the Rye
1984
解决方法:
对于每个for循环,代码将使用最后一本书名称(转换为列表)覆盖列表old_books,因为您没有附加到它,而是每次只创建一个新列表.
>>> list('Ramona Forever')
['R', 'a', 'm', 'o', 'n', 'a', ' ', 'F', 'o', 'r', 'e', 'v', 'e', 'r']
>>> list('1984')
['1', '9', '8', '4']
使用list.append,以便所有符合条件的书名将附加到单个列表中:
>>> older_books = []
>>> older_books.append('Ramona Forever')
>>> older_books.append('1984')
>>> older_books
['Ramona Forever', '1984']
for books in BSI:
if books.year < 2000:
older_books.append(books.title) # <---
使用list comprehension更新备选方案:
older_books = [b.title for b in BSI if b.year < 2000]
内容总结
以上是互联网集市为您收集整理的python – 从namedtuple属性创建新列表全部内容,希望文章能够帮你解决python – 从namedtuple属性创建新列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。