如何将数组列表转换为一个列表并每行打印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个元素 非常感谢您的帮助。
答案 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']
>>>