到目前为止,我只发现了这个:
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)"实际上有点工作。
答案 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
lists
至sets
并使用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])