2024-10-04 03:25:41 发布
网友
我试图写下以下清单理解:
[writer for writer in writerList if problem in writer.solutions for problem in [1,2,3]]
列表理解正在尝试执行以下操作:
然而,使用上面的列表理解,我被告知局部变量problem在赋值之前被引用。在
problem
我想我缺乏一个基本的理解,如何做这种双重列表的理解,其中if依赖于第二个理解。我会很感激在这个问题上有任何亮光!在
如果writer.solutions和{}中的项是可散列的(您在示例中提供的整数是可散列的,比如字典和列表,则可以使用sets来优化和简化这个特定的问题。在
writer.solutions
sets
problems = set([1, 2, 3]) writers = [writer for writer in writerList if not problems.difference(writer.solutions)]
^{}将返回集合中不在另一个集合中的项。因此,如果问题集中的所有项目都在writer.solutions中,那么它将返回一个空集,其计算结果为False(因此not set.difference())。在
not set.difference()
试着这样做:
[writer for writer in writerList for problem in [1,2,3] if problem in writer.solutions]
如果}中的项是可散列的(您在示例中提供的整数是可散列的,比如字典和列表,则可以使用
writer.solutions
和{sets
来优化和简化这个特定的问题。在^{} 将返回集合中不在另一个集合中的项。因此,如果问题集中的所有项目都在
writer.solutions
中,那么它将返回一个空集,其计算结果为False(因此not set.difference()
)。在试着这样做:
相关问题 更多 >
编程相关推荐