如何将2D列表转换为集合?

时间:2014-11-18 23:31:43

标签: python python-3.x

到目前为止,我只发现了这个:

myList = [[32, 12, 52, 63], [32, 64, 67, 52], [64,64,17,34], [17, 76, 98]]

mySet = set(i for j in mylist for i in j)

据我所知,这是有效的,但我不知道为什么会这样。 有人可以一步一步地告诉我" mySet =如何设置(i代表j中的j代表j)"实际上有点工作。

2 个答案:

答案 0 :(得分:2)

你可以将你的集合理解分解为for循环以更好地理解它

mySet = set()                   #declares an empty set
for list in myList:             #loops over the items in myList          (for j in myList)
    for item in list:           #loops over the nested lists in myList   (for i in j)
        mySet.add(item)         #adds the item into the declared set     (i)

这与上面的理解相同,但分解为更多行以使其更具可读性。

答案 1 :(得分:1)

您可以map listssets并使用set.union

myList = [[32, 12, 52, 63], [32, 64, 67, 52], [64,64,17,34], [17, 76, 98]]
my_set = set.union(*map(set,myList))
print (my_set)
set([32, 64, 34, 67, 76, 12, 98, 17, 52, 63])

或者在循环中,update采用可迭代的方式,效率最高:

my_set = set() # create set
for sub_l in myList:
    my_set.update(sub_l)  # update set with each sublist content
print(my_set)
set([32, 64, 34, 67, 76, 12, 98, 17, 52, 63])