从列表理解中获取一个集合。python
我正在写一份清单。我的目标是得到一个列表作为回报,但出于某种原因,我得到了一个集合,即使我正在对列表进行理解。目前我有如下代码:从列表理解中获取一个集合。python,python,list-comprehension,Python,List Comprehension,我正在写一份清单。我的目标是得到一个列表作为回报,但出于某种原因,我得到了一个集合,即使我正在对列表进行理解。目前我有如下代码: filteredList = {obj.index for obj in myObjectList if filter(obj) == True} 当我检查“myObjectList”的类型时,它是一个列表,但当我检查“filteredList”的类型时,它是一个集合。为什么要在列表中给我一个集合进行理解?使用大括号进行理解会生成一个集合或dict。您应该使用方括号
filteredList = {obj.index for obj in myObjectList if filter(obj) == True}
当我检查“myObjectList”的类型时,它是一个列表,但当我检查“filteredList”的类型时,它是一个集合。为什么要在列表中给我一个集合进行理解?使用大括号进行理解会生成一个集合或dict。您应该使用方括号来代替:[obj.index for obj in…]理解的结果不是基于您正在执行理解的数据类型。 这与你如何建立理解的结果有关。在本例中,您使用大括号进行理解,因此您得到了一个集合 请尝试以下方法:
filteredList = [obj.index for obj in myObjectList if filter(obj) == True]
这会将生成的obj.index放在由[]方括号定义的列表中,而不是一组{}方括号对象的类型不是由您迭代的内容决定的,而是由对象周围的方括号决定的。你有{}而且没有k:v类型的行为,所以解释器认为你在试图做一套理解。Do filteredList=[…]以获取列表。的可能重复项