将多个列表合并为单个列表格式

时间:2019-04-03 12:33:47

标签: python python-3.x

晚上好, 我正在尝试从多个不同的列表创建一个单数列表,但是当我将它们合并时,它只是给我[listA], [ListB]而不是ListA, ListB我不知道如何解释,所以请告诉我我尝试过并展示的内容我的期望。

这是我的原始代码。

N, B, E = "N", "B", "E"
data = [N, N, N, N, N, N, N, 
        N, N, N, N, N, N, N, 
        N, N, N, B, E, N, E,
        N, N, N, N, B, E, N,
        B, B, B, B, B, B, B,
        N, E, N, B, N, N, N]

当我打印data时,我得到结果

['N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'B', 'E', 'N', 'E', 'N', 'N', 'N', 'N', 'B', 'E', 'N', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'N', 'E', 'N', 'B', 'N', 'N', 'N']

这就是我想发生的事情,但是我很快意识到我将无法轻松地以这种格式进行编辑。所以我尝试制作6个不同的列表,然后将它们转换为一个。

N, B, E = "N", "B", "E"
Data6 = [N, N, N, N, N, N, N]
Data5 = [N, N, N, N, N, N, N]
Data4 = [N, N, N, B, E, N, E]
Data3 = [N, N, N, N, B, E, N]
Data2 = [B, B, B, B, B, B, B]
Data1 = [N, E, N, B, N, N, N]

所以这是我的基础,我尝试了两种方式将它们合并,但是在谷歌搜索了一段时间之后,我仍然一无所获

我2次尝试,其中:

data = [Data6,
        Data5,
        Data4,
        Data3,
        Data2,
        Data1]
print(data)
data = []
data.append(Data6)
data.append(Data5)
data.append(Data4)
data.append(Data3)
data.append(Data2)
data.append(Data1)
print(data)

我期望我从预先创建的列表中得到结果,但是我却得到了 [['N', 'N', 'N', 'N', 'N', 'N', 'N'], ['N', 'N', 'N', 'N', 'N', 'N', 'N'], ['N', 'N', 'N', 'B', 'E', 'N', 'E'], ['N', 'N', 'N', 'N', 'B', 'E', 'N'], ['B', 'B', 'B', 'B', 'B', 'B', 'B'], ['N', 'E', 'N', 'B', 'N', 'N', 'N']]

如果有人知道如何提供帮助或我做错了什么,将不胜感激

7 个答案:

答案 0 :(得分:2)

对于列表,应使用+运算符。

l1 = [1,2,3,4]
l2 = [5,6,7,8]
print(l1+l2)
>> [1,2,3,4,5,6,7,8]

此操作称为串联

您要解决的问题是:

data = Data6 + Data5 + Data4 + Data3 + Data2 + Data1 

答案 1 :(得分:1)

如果我理解正确,则只需将列表连接起来:

    DATA = Data6 + Data5 + Data4 + Data3 + Data2 + Data1

答案 2 :(得分:1)

使用初始值[]的总和

data = sum(data, [])

或这样构建:

data = [*Data6, *Data5, *Data4, *Data3, *Data2, *Data1]

答案 3 :(得分:1)

发生这种情况是因为您要在列表中插入列表。此操作只是将指向列表A的指针放到列表B中。因此,您拥有包含另一个列表的列表B。 您可以按照Rakesh的建议使用简单的串联(+)或array.extend()。

答案 4 :(得分:1)

您可以像这样使用扩展

N, B, E = "N", "B", "E"

Data6 = [N, N, N, N, N, N, N]
Data5 = [N, N, N, N, N, N, N]
Data4 = [N, N, N, B, E, N, E]
Data3 = [N, N, N, N, B, E, N]
Data2 = [B, B, B, B, B, B, B]
Data1 = [N, E, N, B, N, N, N]

data = []
data.extend(Data6)
data.extend(Data5)
data.extend(Data4)
data.extend(Data3)
data.extend(Data2)
data.extend(Data1)

print(data) # Output : ['N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'B', 'E', 'N', 'E', 'N', 'N', 'N', 'N', 'B', 'E', 'N', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'N', 'E', 'N', 'B', 'N', 'N', 'N']

答案 5 :(得分:0)

只需对data1,data2和Soo on的内容运行一个for循环,然后将元素压入

由于您要推送所有列表,因此它们的输出将作为列表列表

New_list = [* data1,* data2],继续,python3.6中的新方法

答案 6 :(得分:0)

要使其高效,您可以使用for循环来连接列表。无论要连接多少个列表,都不需要一个接一个地编写。

N, B, E = "N", "B", "E"
Data6 = [N, N, N, N, N, N, N]
Data5 = [N, N, N, N, N, N, N]
Data4 = [N, N, N, B, E, N, E]
Data3 = [N, N, N, N, B, E, N]
Data2 = [B, B, B, B, B, B, B]
Data1 = [N, E, N, B, N, N, N]

data = [Data6,
        Data5,
        Data4,
        Data3,
        Data2,
        Data1]

new_data = []
for dt in data:
    new_data = new_data + dt
print (new_data)