将每个值转移到其他列表

时间:2019-01-29 17:35:02

标签: python

我想将每个值都放在另一个我想在下面的示例中列出的列表中:

[['2', '3'], ['1', '4'], ['3', '2'], ['4', '1'], ['2', '-2'], ['2', '3'], ['1', '5'], ['3', '3'], ['4', '2'], ['3', '1'], ['3', '2'], ['4', '1'], ['3', '-3'], ['2', '2'], ['4', '1'], ['3', '0'], ['4', '3'], ['2', '0']]

像这样:

[[['2'], ['3']], [['1'], ['4']], [['3'], ['2']], [['4'], ['1']], [['2'], ['-2']],
                               [['2'], ['3']], [['1'], ['5']], [['3'], ['3']], [['4'], ['2']], [['3'], ['1']],
                               [['3'], ['2']], [['4'], ['1']], [['3'], ['-3']], [['2'], ['2']], [['4'], ['1']],
                               [['3'], ['0']], [['4'], ['3']], [['2'], ['0']]]

6 个答案:

答案 0 :(得分:2)

首先,这是您对单个子列表执行的操作:

out = [[elem] for elem in sub_list]

由于您要对主列表中的每个子列表执行此操作,所以:

out = [
        [[elem] for elem in sub_list]
        for sub_list in main_list
      ]

列表理解是一件很棒的事情!

答案 1 :(得分:0)

list(map(lambda x: [[x[0]],[x[1]]], aa))

aa是您的输入列表:

>>> aa
[['2', '3'], ['1', '4'], ['3', '2'], ['4', '1'], ['2', '-2'], ['2', '3'], ['1', '5'], ['3', '3'], ['4', '2'], ['3', '1'], ['3', '2'], ['4', '1'], ['3', '-3'], ['2', '2'], ['4', '1'], ['3', '0'], ['4', '3'], ['2', '0']]
>>> list(map(lambda x: [[x[0]],[x[1]]], aa))
[[['2'], ['3']], [['1'], ['4']], [['3'], ['2']], [['4'], ['1']], [['2'], ['-2']], [['2'], ['3']], [['1'], ['5']], [['3'], ['3']], [['4'], ['2']], [['3'], ['1']], [['3'], ['2']], [['4'], ['1']], [['3'], ['-3']], [['2'], ['2']], [['4'], ['1']], [['3'], ['0']], [['4'], ['3']], [['2'], ['0']]]

答案 2 :(得分:0)

您可以通过嵌套列表理解来实现所需的目标:

>>> a = [['2', '3'], ['1', '4'], ['3', '2'], ['4', '1'], ['2', '-2'], ['2', '3'], ['1', '5'], ['3', '3'], ['4', '2'], ['3', '1'], ['3', '2'], ['4', '1'], ['3', '-3'], ['2', '2'], ['4', '1'], ['3', '0'], ['4', '3'], ['2', '0']]    
>>> b = [[[j] for j in i] for i in a]
>>> b
[[['2'], ['3']], [['1'], ['4']], [['3'], ['2']], [['4'], ['1']], [['2'], ['-2']], [['2'], ['3']], [['1'], ['5']], [['3'], ['3']], [['4'], ['2']], [['3'], ['1']], [['3'], ['2']], [['4'], ['1']], [['3'], ['-3']], [['2'], ['2']], [['4'], ['1']], [['3'], ['0']], [['4'], ['3']], [['2'], ['0']]]

答案 3 :(得分:0)

假设子列表始终包含两个元素,则可以执行以下操作:

[[[a], [b]] for a,b in your_list]

答案 4 :(得分:0)

通过递归,您可以获取具有任何嵌套级别的通用列表所需的内容。

def make_sublists(ll):
    res = []
    for i in ll:
        if isinstance(i, list):
            res.append(make_sublists(i))
        else:
            res.append([i])
    return res

使用您的示例:

mylist = [['2', '3'], ['1', '4'], ['3', '2'], ['4', '1'], ['2', '-2'], ['2', '3'], ['1', '5'], ['3', '3'], ['4', '2'], ['3', '1'], ['3', '2'], ['4', '1'], ['3', '-3'], ['2', '2'], ['4', '1'], ['3', '0'], ['4', '3'], ['2', '0']]
print(make_sublists(mylist))

您将获得预期的输出。

[[['2'], ['3']], [['1'], ['4']], [['3'], ['2']], [['4'], ['1']], [['2'], ['-2']], [['2'], ['3']], [['1'], ['5']], [['3'], ['3']], [['4'], ['2']], [['3'], ['1']], [['3'], ['2']], [['4'], ['1']], [['3'], ['-3']], [['2'], ['2']], [['4'], ['1']], [['3'], ['0']], [['4'], ['3']], [['2'], ['0']]]

答案 5 :(得分:0)

如果您希望您的解决方案适用于每个子列表中的任意数量的元素,请检查以下内容:

inlist = [['2', '3'], ['1', '4'], ['3', '2'], ['4', '1'], ['2', '-2'], ['2', '3'], ['1', '5'], ['3', '3'], ['4', '2'], ['3', '1'], ['3', '2'], ['4', '1'], ['3', '-3'], ['2', '2'], ['4', '1'], ['3', '0'], ['4', '3'], ['2', '0']]
inlist = list(map(lambda elem: list(map(list,elem)),inlist))
print(inlist)