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

2024-10-01 00:28:38 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将数组列表转换为一个列表并每行打印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个元素 非常感谢你的帮助。你知道吗


Tags: 元素列表数组mergedmaddenfrajfk
3条回答

要将原始嵌套数组解压到单个数组中,请执行以下操作:

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

一个建议是确保区分数据及其“表示”。 如果您希望每行只打印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

这将得到您的输出:

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(']')

输出:

['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']

相关问题 更多 >