-6ren">
gpt4 book ai didi

python - 列表理解与列表和元组列表

转载 作者:太空宇宙 更新时间:2023-11-04 10:10:13 25 4
gpt4 key购买 nike

在我的 Python 2.7.5 代码中,我有以下数据结构:

一个简单的列表...

>>> data["parts"]
['com', 'google', 'www']

...和一个元组列表...

>>> data["glue"]
[(1L, 'com'), (3L, 'google')]

当输入存在这些结构的代码时,我将始终知道data["parts"] 中的内容; data["glue"] 充其量将包含与 data["parts"] 中的内容“匹配”的元组 - 最坏情况 data["glue "] 可以为空。我需要知道的是胶水缺少的部分。因此,对于上面的示例数据,我需要知道缺少“www”,这意味着它不在 data["glue"] 中可能存在的任何元组中。

我首先尝试通过各种 for 循环和 if 语句来生成缺失部分的列表,但它充其量是非常困惑的。我试过列表理解但失败了。也许列表理解也不是处理这个问题的方法。

非常感谢您的帮助,谢谢。

最佳答案

您可以使用 set difference操作。

print set(data['parts'])-set(i[1] for i in data['glue'])
>>> set(['www'])

或者简单地使用 list comprehensions :

print [i for i in data['parts'] if i not in (j[1] for j in data['glue'])]
>>> ['www']

set 操作在速度部门获胜,运行操作 10,000,000 次,我们可以看到列表推导花费了 16 秒的时间:

import timeit
print timeit.timeit(lambda : set(data['parts'])-set(i[1] for i in data['glue']), number=10000000)
>>> 16.8089739356
print timeit.timeit(lambda : [i for i in data['parts'] if i not in (j[1] for j in data['glue'])], number=10000000)
>>> 33.5426096522

关于python - 列表理解与列表和元组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38800133/

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