Python 3.x 在python中从嵌套列表创建集合

Python 3.x 在python中从嵌套列表创建集合,python-3.x,list,set,Python 3.x,List,Set,有人能解释一下这是怎么回事吗?您正在迭代名称、标记到标记表。因此,您要提取两个值并将它们存储为name,忽略它们,并将它们存储为标记,从中创建列表。您刚刚创建的列表将传递给set,后者将创建一个集合。您可以逐步分解代码: marksheet = [['harry',87], ['bob', 76], ['bucky', 98]] print(set([marks for name, marks in marksheet])) output: {98, 76, 87} 您还可以将要提取的值括

有人能解释一下这是怎么回事吗?

您正在迭代
名称、标记
标记表
。因此,您要提取两个值并将它们存储为
name
,忽略它们,并将它们存储为
标记
,从中创建列表。您刚刚创建的列表将传递给
set
,后者将创建一个集合。您可以逐步分解代码:

marksheet = [['harry',87], ['bob', 76], ['bucky', 98]]

print(set([marks for name, marks in marksheet]))

output: {98, 76, 87}
您还可以将要提取的值括在括号中,以使其更清楚:

marksheet = [['harry',87], ['bob', 76], ['bucky', 98]]
In [40]: marksheet                                                                                                           
Out[40]: [['harry', 87], ['bob', 76], ['bucky', 98]]

In [41]: l = [marks for name, marks in marksheet]                                                                            

In [42]: l                                                                                                                   
Out[42]: [87, 76, 98]
有些人使用
\uu
表示返回值被忽略:

In [43]: l = [marks for (name, marks) in marksheet]                                                                          

In [44]: l                                                                                                                   
Out[44]: [87, 76, 98]
以上是列表理解的一个例子。这相当于:

In [45]: l = [marks for (_, marks) in marksheet]                                                                             

In [46]: l                                                                                                                   
Out[46]: [87, 76, 98]
从那里,您只需将列表传递到
set
,这可能需要一个iterable。在本例中,您刚刚创建的列表是iterable:

In [47]: l=[]                                                                                                                

In [48]: for (name, marks) in marksheet: 
    ...:     l.append(marks) 
    ...:                                                                                                                     

In [49]: l                                                                                                                   
Out[49]: [87, 76, 98]
In [50]: set(l)                                                                                                              
Out[50]: {76, 87, 98}