如何将数组数组转换为 Python 3 中的集合?

noo*_*bie 0 python python-3.x

我有什么作为输入:

list: [[2, 4], [2, 6], [2, 8]]
Run Code Online (Sandbox Code Playgroud)

我想要的输出:

set: 2,4,6,8
Run Code Online (Sandbox Code Playgroud)

我目前在做什么(不工作):

def convert(input_list):
    all_nums = set([arr[0], arr[1]] for arr in input_list)
    return all_nums
Run Code Online (Sandbox Code Playgroud)

我知道我可以手动遍历父数组并将子数组的内容添加到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
Run Code Online (Sandbox Code Playgroud)
  • 如何以pythonic的方式做到一点?
  • 在第二种方法中,我可以做类似的事情all_nums.add(inner_list[0], inner_list[1])吗?

wiz*_*zz4 5

简单地:

my_list = [[2, 4], [2, 6], [2, 8]]
my_set = {e for l in my_list for e in l}
Run Code Online (Sandbox Code Playgroud)

这是使用“集合理解”,它是以下内容的压缩版本:

my_list = [[2, 4], [2, 6], [2, 8]]
my_set = set()
for l in my_list:
    for e in l:
        my_set.add(e)
Run Code Online (Sandbox Code Playgroud)

或者,你可以这样做:

my_list = [[2, 4], [2, 6], [2, 8]]
my_set = set()
for l in my_list:
    my_set.update(l)
Run Code Online (Sandbox Code Playgroud)

(从modesitt无耻地窃取的变量名。)