有谁能告诉我为什么这个功能会起作用:
def findDisappearedNumbers(self, nums):
return list(set(range(1,len(nums)+1)) - set(nums))
但这个功能不起作用:
def findDisappearedNums(self, nums):
return [set(range(1, len(nums)+1)) - set(nums)]
我想使用[]而不是list(),因为[]有更好的性能,但是如果将[]与set()函数一起使用,则会出现错误,而list()与set()函数一起使用效果很好。谢谢。你知道吗
>>> from timeit import timeit
>>> timeit("[]")
0.040084982867934334
>>> timeit("list()")
0.17704233359267718enter code here
不太一样。在使用
[]
时,会得到一个包含单个元素的列表,在本例中是一组数字。当你用list()
强制转换它时,你说的是'把集合中的所有元素都列出来'。如果您愿意,您可以使用列表理解来执行此操作,方法是:但我认为大多数Python会在这种情况下使用
list()
。你知道吗list()
和[]
做不同的事情。list
接受iterable,并将其所有元素放入一个列表中。[]
获取单个元素,并将它们放入一个列表中。你知道吗因此,
list(iterable)
将获得与iterable相同长度(和元素)的列表。[iterable]
将创建一个长度为1的列表,其中列表中唯一的元素是iterable,而iterable又可能包含多个元素。你知道吗他们做不同的事情。你知道吗
list(set('abc'))
给出一个包含三个元素的列表:'a'
、'b'
和'c'
。你知道吗[set('abc')]
给出了一个只有一个元素的列表:set
。你知道吗相关问题 更多 >
编程相关推荐