我输入的内容:
list: [[2, 4], [2, 6], [2, 8]]
我想要作为输出:
set: 2,4,6,8
我目前正在做什么(不起作用):
def convert(input_list):
all_nums = set([arr[0], arr[1]] for arr in input_list)
return all_nums
我知道我可以手动遍历父数组并将子数组的内容添加到set
中,如下所示:
def convert(input_list):
all_nums = set()
for inner_list in input_list:
all_nums.add(inner_list[0])
all_nums.add(inner_list[1])
return all_nums
all_nums.add(inner_list[0], inner_list[1])
的事情吗?答案 0 :(得分:3)
简单地:
my_list = [[2, 4], [2, 6], [2, 8]]
my_set = {e for l in my_list for e in l}
这使用的是“集合理解”,它是以下内容的精简版本:
my_list = [[2, 4], [2, 6], [2, 8]]
my_set = set()
for l in my_list:
for e in l:
my_set.add(e)
或者,您可以执行以下操作:
my_list = [[2, 4], [2, 6], [2, 8]]
my_set = set()
for l in my_list:
my_set.update(l)
(变量名从modesitt偷偷窃取。)
答案 1 :(得分:2)
使用itertools.chain
和set
的一种方法
例如:
from itertools import chain
l = [[1, 2], [1, 3], [1, 4]]
print(set(chain.from_iterable(l)))
输出:
set([1, 2, 3, 4])
chain
将列表弄平答案 2 :(得分:1)
您可以尝试以下方法:
from itertools import chain
l = [[1, 2], [1, 3], [1, 4]]
l = list(chain.from_iterable(l))
set_l = set(l)
答案 3 :(得分:0)
我会做以下
set_ = {e for l in my_list for e in l}
答案 4 :(得分:0)
您可以使用集合理解:
l = [[2, 4], [2, 6], [2, 8]]
print({i for s in l for i in s})
这将输出:
{8, 2, 4, 6}