如何将数组列表转换为一个列表?

时间:2019-05-22 13:33:45

标签: python python-3.x list multidimensional-array jupyter-notebook

如何将数组列表转换为一个列表并每行打印6个元素?

数组列表如下:

[['UES9151GS5', 'SQU6245R', 'DEN', 'FRA', '1420564460', '1049\n'],
 ['SJD8775RZ4', 'SQU6245R', 'DEN', 'FRA', '1420564460', '1049\n'],
 ['MXU9187YC7', 'MOO1786A', 'MAD', 'FRA', '1420563408', '184\n'],
 ['PUD8209OG3', 'XXQ4064B', 'JFK', 'FRA', '1420563917', '802\n']]

我希望它看起来像这样:

['UES9151GS5', 'SQU6245R', 'DEN', 'FRA', '1420564460', '1049\n',
 'SJD8775RZ4', 'SQU6245R', 'DEN', 'FRA', '1420564460', '1049\n',
 'MXU9187YC7', 'MOO1786A', 'MAD', 'FRA', '1420563408', '184\n',
 'PUD8209OG3', 'XXQ4064B', 'JFK', 'FRA', '1420563917', '802\n']

我尝试过的是以下代码:

merged_list = []

for l in mylist:
    merged_list += l

这就是我得到的:

['UES9151GS5',
 'SQU6245R',
 'DEN',
 'FRA',
 '1420564460',
 '1049\n',
 'SJD8775RZ4',
 'SQU6245R',
 'DEN',
 'FRA',
 '1420564460',
 '1049\n',
 'MXU9187YC7',
 'MOO1786A',
 'MAD',
 'FRA',
 '1420563408',
 '184\n',
 'PUD8209OG3',
 'XXQ4064B',
 'JFK',
 'FRA',
 '1420563917',
 '802\n']

我正在寻找的是每行打印6个元素 非常感谢您的帮助。

5 个答案:

答案 0 :(得分:2)

要将原始嵌套数组解压缩为单个数组:

a = [['UES9151GS5', 'SQU6245R', 'DEN', 'FRA', '1420564460', '1049\n'],
     ['SJD8775RZ4', 'SQU6245R', 'DEN', 'FRA', '1420564460', '1049\n'],
     ['MXU9187YC7', 'MOO1786A', 'MAD', 'FRA', '1420563408', '184\n'],
     ['PUD8209OG3', 'XXQ4064B', 'JFK', 'FRA', '1420563917', '802\n']]

b = []
for row in a:
    b += row

这将导致:

b = ['UES9151GS5', 'SQU6245R', 'DEN', 'FRA', '1420564460', '1049\n', 'SJD8775RZ4', 'SQU6245R', 'DEN', 'FRA', '1420564460', '1049\n', 'MXU9187YC7', 'MOO1786A', 'MAD', 'FRA', '1420563408', '184\n', 'PUD8209OG3', 'XXQ4064B', 'JFK', 'FRA', '1420563917', '802\n']

如果要在包含“ \ n”的每个字符串之后打印带有换行符的单个数组,则:

print(*b)

其中splat(*)表示可迭代的拆包。 (请参阅https://docs.python.org/3/tutorial/controlflow.html#tut-unpacking-arguments

答案 1 :(得分:0)

这将获得您的输出:

col1       col2     col3     col4      json_data  
----------------------------------------------------
 a           b        c       d       {"col1:"a", "col2:"b","col3:"c","col4:"d"}
 e           f        g       h       {"col1:"e", "col2:"f","col3:"g","col4:"h"}

输出:

from functools import reduce
d = [['UES9151GS5', 'SQU6245R', 'DEN', 'FRA', '1420564460', '1049\n'],
 ['SJD8775RZ4', 'SQU6245R', 'DEN', 'FRA', '1420564460', '1049\n'],
 ['MXU9187YC7', 'MOO1786A', 'MAD', 'FRA', '1420563408', '184\n'],
 ['PUD8209OG3', 'XXQ4064B', 'JFK', 'FRA', '1420563917', '802\n']]
merged_list = reduce(lambda x, y: x + y, d)
print('[', end="")
for index, element in enumerate(merged_list):
    if element.endswith('\n'):
        if index != len(merged_list) - 1:
            print(f"'{element.strip()}\\n',\n", end="") # last element in row
        else:
            print(f"'{element.strip()}\\n'", end="") # last element in list
    else:
        print(f"'{element.strip()}', ", end="")
print(']')

答案 2 :(得分:0)

一个建议是确保区分数据及其“表示形式”。 如果您希望每行仅打印6个字符,那么这不再是数据本身如何存储的问题,而是一个正确表示信息的问题。

请记住,最简单的方法是简单地分别打印每一行数据。

mylist = [['UES9151GS5', 'SQU6245R', 'DEN', 'FRA', '1420564460', '1049\n'],
          ['SJD8775RZ4', 'SQU6245R', 'DEN', 'FRA', '1420564460', '1049\n'],
          ['MXU9187YC7', 'MOO1786A', 'MAD', 'FRA', '1420563408', '184\n'],
          ['PUD8209OG3', 'XXQ4064B', 'JFK', 'FRA', '1420563917', '802\n']]

for row in mylist:
    print(" ".join(row))

输出:

UES9151GS5 SQU6245R DEN FRA 1420564460 1049

SJD8775RZ4 SQU6245R DEN FRA 1420564460 1049

MXU9187YC7 MOO1786A MAD FRA 1420563408 184

PUD8209OG3 XXQ4064B JFK FRA 1420563917 802

如果您注意到,末尾会有一个额外的换行符,这是因为数据在每一行的最后一个字符串中都有它。您可以将其切成薄片以进行“快速修复”

for row in mylist:
    print(" ".join(row)[:-1])
#Output:
UES9151GS5 SQU6245R DEN FRA 1420564460 1049
SJD8775RZ4 SQU6245R DEN FRA 1420564460 1049
MXU9187YC7 MOO1786A MAD FRA 1420563408 184
PUD8209OG3 XXQ4064B JFK FRA 1420563917 802

答案 3 :(得分:0)

如果您只想合并两个列表,请使用原始列表,然后使用extend()在末尾追加第二个列表:

merged_list = mylist 
merged_list.extend(second_list)

答案 4 :(得分:0)

您应该使用以下功能:

def flatten(iterable):
    for item in iterable:
        try:
            yield from flatten(item)
        except TypeError:
            yield item

如果您正在运行交互式解释器,则可以使用它的修改版本,如下所示:

>>> def flatten(iterable):
    for item in iterable:
        if isinstance(item, str):
            yield item
        else:
            try:
                yield from flatten(item)
            except TypeError:
                yield item


>>> array_2D = [['UES9151GS5', 'SQU6245R', 'DEN', 'FRA', '1420564460', '1049\n'],
 ['SJD8775RZ4', 'SQU6245R', 'DEN', 'FRA', '1420564460', '1049\n'],
 ['MXU9187YC7', 'MOO1786A', 'MAD', 'FRA', '1420563408', '184\n'],
 ['PUD8209OG3', 'XXQ4064B', 'JFK', 'FRA', '1420563917', '802\n']]
>>> flat_array = list(flatten(array_2D))
>>> flat_array
['UES9151GS5', 'SQU6245R', 'DEN', 'FRA', '1420564460', '1049\n', 'SJD8775RZ4', 'SQU6245R', 'DEN', 'FRA', '1420564460', '1049\n', 'MXU9187YC7', 'MOO1786A', 'MAD', 'FRA', '1420563408', '184\n', 'PUD8209OG3', 'XXQ4064B', 'JFK', 'FRA', '1420563917', '802\n']
>>>