与set()函数一起使用时在Python中使用[]和list()的区别

2024-09-30 04:26:29 发布

您现在位置:Python中文网/ 问答频道 /正文

有谁能告诉我为什么这个功能会起作用:

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

Tags: 函数self功能lenreturndef错误range
3条回答

不太一样。在使用[]时,会得到一个包含单个元素的列表,在本例中是一组数字。当你用list()强制转换它时,你说的是'把集合中的所有元素都列出来'。如果您愿意,您可以使用列表理解来执行此操作,方法是:

[x for x in set(range(1, len(nums)+1)) - set(nums)]

但我认为大多数Python会在这种情况下使用list()。你知道吗

list()[]做不同的事情。list接受iterable,并将其所有元素放入一个列表中。[]获取单个元素,并将它们放入一个列表中。你知道吗

因此,list(iterable)将获得与iterable相同长度(和元素)的列表。[iterable]将创建一个长度为1的列表,其中列表中唯一的元素是iterable,而iterable又可能包含多个元素。你知道吗

他们做不同的事情。你知道吗

list(set('abc'))给出一个包含三个元素的列表:'a''b''c'。你知道吗

[set('abc')]给出了一个只有一个元素的列表:set。你知道吗

相关问题 更多 >

    热门问题