gpt4 book ai didi

python - 将一个列表与另一个嵌套列表(无序)进行比较并输出一个列表

转载 作者:行者123 更新时间:2023-11-28 22:40:07 31 4
gpt4 key购买 nike

这是我的 list :

x = [['Godel Escher Bach', '1979', 'Douglas Hofstadter'], ['What if?', '2014', 'Randall Munroe'], ['Thing Explainer', '2015', 'Randall Munroe'], ['Alan Turing: The Enigma', '2014', 'Andrew Hodge']]
y = ['2014', '2015', '2014']

例如,将 y[0] 与 x[0][0]~x[2][2] 进行比较,然后打印 x 中具有 y 中元素的列表(嵌套列表)。

这个函数应该将 y 中的所有元素与 x 中的每个元素进行比较

我想了2天,想不通。请帮忙!

最佳答案

据我了解,您想列出 x 中出版日期在 y 中的书籍。应该这样做:

>>> [b for b in x if b[1] in y]

[['What if?', '2014', 'Randall Munroe'],
['Thing Explainer', '2015', 'Randall Munroe'],
['Alan Turing: The Enigma', '2014', 'Andrew Hodge']]

y 在这里可能应该是一个set。性能提升可以忽略不计,因为 y 非常小,但它是一个集合传达了您打算如何使用它:

years = {'2014', '2015', '2014'}

最后,您可能希望使用 collections 中的 namedtuple 来表示您的图书。像这样的东西:

from collections import namedtuple
Book = namedtuple('Book', 'name year author')
books = [Book(b) for b in x]

那么上面的列表推导就变成了:

[b for b in books if b.year in years]

这很好并且可读。

关于python - 将一个列表与另一个嵌套列表(无序)进行比较并输出一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34056544/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com