我有两个包含一些引号及其作者的列表。如何创建一个包含两个列表中两个元素的新列表?
quotes = [
'Tough times don’t last. Tough people do.' ,
'Courage is one step ahead of fear.'
]
authors = [
'Robert H. Schuller',
'Coleman Young'
]
我希望它退回
quotes_list = [
'Tough times don’t last. Tough people do. - Robert H. Schuller' ,
'Courage is one step ahead of fear. - Coleman Young'
]
任何解释将不胜感激。谢谢。
答案 0 :(得分:1)
您正在寻找尽可能多的str.join
和zip
状态:
使用map
来加快速度,而' - '.join
则使用一个字符串序列并将它们连接到一个由初始字符串分隔的字符串中,而zip
则可迭代多个序列。
>>> quotes = ['Tough times don’t last. Tough people do.', 'Courage is one step ahead of fear.']
>>> authors = ['Robert H. Schuller','Coleman Young']
>>> list(map(' - '.join, zip(quotes, authors))))
['Tough times don’t last. Tough people do. - Robert H. Schuller', 'Courage is one step ahead of fear. - Coleman Young']
或者,您也可以使用列表推导代替map,这是更可取的方式,因为它虽然可读性强,并且在大多数情况下更优化了,尽管我认为map会更快,尽管我尚未测试:
[' - '.join(*s) for s in zip(quotes, authors)]
答案 1 :(得分:0)
zip
是您要寻找的
zip(quotes, authors)
答案 2 :(得分:0)
您可以使用zip
和list comprehension来做到这一点:
res = [q + " - " + a for q, a in zip(quotes, authors)]
print(res)
输出
['Tough times don’t last. Tough people do. - Robert H. Schuller', 'Courage is one step ahead of fear. - Coleman Young']
答案 3 :(得分:0)
[' - '.join(x) for x in zip(quotes, authors)]
zip
使您可以一次遍历两个列表的元素,而' - '.join()
则将由破折号分隔的元素组合在一起
答案 4 :(得分:0)
压缩并加入他们:
list(map(" - ".join, zip(quotes, authors)))
答案 5 :(得分:0)
您可以通过使用zip()
,f字符串和列表理解来实现所描述的确切行为:
quotes_list = [f"{quote} - {author}" for quote, author in zip(quotes, author)]
说明:
zip()
函数创建一个元组列表,其中第i个元组包含每个列表中的第i个元素。
zip(quotes, authors) = [('Tough times don’t last. Tough people do.', 'Robert H. Schuller'), ('Courage is one step ahead of fear.', 'Coleman Young')]
然后,我们仅遍历列表并使用f字符串来实现确切的格式。