Python 将简单循环转换为列表理解
为什么第一个“标题”列表不起作用,但第二个却起作用?我如何使第一个工作? 谢谢大家!Python 将简单循环转换为列表理解,python,python-3.x,Python,Python 3.x,为什么第一个“标题”列表不起作用,但第二个却起作用?我如何使第一个工作? 谢谢大家! 突出显示的\u诗歌=“后像:奥德雷·洛德:1997年,《影子:威廉·卡洛斯·威廉姆斯:1915年》、《狂喜:加布里拉·米斯特拉尔:1925年》、《乔治亚州黄昏:让·图默:1923年》、《黎明前的离别:安琪:2014年》、《难以言表的需要:沃尔特·惠特曼:1871年》、《格鲁普尔邓普的歌:谢尔·西尔弗斯坦:2004年》、《天使之声墨西哥城:卡门·布卢萨:2013年》、《恋爱:卡马拉·苏莱亚:1965年》,”,梦的
突出显示的\u诗歌=“后像:奥德雷·洛德:1997年,《影子:威廉·卡洛斯·威廉姆斯:1915年》、《狂喜:加布里拉·米斯特拉尔:1925年》、《乔治亚州黄昏:让·图默:1923年》、《黎明前的离别:安琪:2014年》、《难以言表的需要:沃尔特·惠特曼:1871年》、《格鲁普尔邓普的歌:谢尔·西尔弗斯坦:2004年》、《天使之声墨西哥城:卡门·布卢萨:2013年》、《恋爱:卡马拉·苏莱亚:1965年》,”,梦的变奏:兰斯顿·休斯:1994,梦之木:阿德里安·里奇:1987”
突出显示的诗歌列表=突出显示的诗歌。拆分(',')
突出显示的\u诗歌\u剥离=[line.strip()用于突出显示的\u诗歌\u列表中的行]
突出显示的诗篇详细信息=[突出显示的诗篇中的行的行分割(':')]
打印(突出显示的\u诗歌\u细节)
打印()
打印()
打印()
打印(突出显示的\u诗歌\u细节[1][1])
titles=[titles.append(title[0]),用于突出显示的\u诗歌\u细节中的标题[0]
#诗人=[诗人[1]。在突出显示的诗\u细节中为诗人添加()
#dates=[date[2]。为突出显示的\u\u详细信息中的日期追加()
对于突出显示的\u诗歌\u细节中的标题:
titles.append(title[0])
印刷品(标题)
处理列表理解时,必须先阅读后面的表达式,然后阅读第一部分:
titles = [title[0] for title in highlighted_poems_details]
^------^ ^--------------------------------^
| |
the information iteration over
you want to add your data
to your new list
因此,您可以这样阅读:对于诗歌细节中的每个标题,将标题[0]添加到列表中
正确:
titles = [title[0] for title in highlighted_poems_details]
您不是在理解列表中添加任何内容,而是在定义它。或使用:
from operator import itemgetter
titles = list(map(itemgetter(0), highlighted_poems_details))
为什么不起作用?因为在使用title[0]
时使用了未定义变量title
,请参见下面的标记
titles = [titles.append(title[0]) for title[0] in highlighted_poems_details]
------------------------^^^^^^^-------^^^^^^^------------------------------
如Relandom所建议的,您可以使用
titles = [title[0] for title in highlighted_poems_details]
删除append
-->titles=[title[0]用于突出显示的\u poems\u详细信息中的标题]