Skip to main content
 首页 » 编程设计

python之列表理解多行字符串到二维数组

2025年05月04日3852php

我在解决问题时遇到了问题。我需要转换以下字符串

meciuri = """Romania 4 - 0 Franta 
Italia 2 - 1 Rusia 
Franta 3 - 0 Italia 
Rusia 2 - 2 Romania 
Romania 1 - 0 Italia 
Franta 2 - 1 Rusia""" 

变成一个看起来像这样的二维数组

meciuri_2darray = [['Romania', '4', '-', '0' ,'Franta'], 
['Italia' ,'2' ,'-', '1', 'Rusia'],  
['Franta' ,'3' ,'-' ,'0', 'Italia'],  
['Rusia', '2', '-', '2', 'Romania'], 
['Romania', '1' ,'-' ,'0' ,'Italia'], 
['Franta' ,'2' ,'-' ,'1' ,'Rusia']] 

我尝试过不同的变体,但我真的是二维数组和列表理解方面的新手。这是我到目前为止设法得到的,但结果根本不令我满意

meciuri_2darray = [[i for i in meciuri.split('\n')] for line in meciuri] 

输出

[['R'], ['o'], ['m'], ['a'], ['n'], ['i'], ['a'], [' '], ['4'], [' '], ['-'], [' '], ['0'], [' '], ['F'], ['r'], ['a'], ['n'], ['t'], ['a'], ['', ''], ['I'], ['t'], ['a'], ['l'], ['i'], ['a'], [' '], ['2'], [' '], ['-'], [' '], ['1'], [' '], ['R'], ['u'], ['s'], ['i'], ['a'], ['', ''], ['F'], ['r'], ['a'], ['n'], ['t'], 
['a'], [' '], ['3'], [' '], ['-'], [' '], ['0'], [' '], ['I'], ['t'], ['a'], ['l'], ['i'], ['a'], ['', ''], ['R'], ['u'], ['s'], ['i'], ['a'], [' '], ['2'], [' '], ['-'], [' '], ['2'], [' '], ['R'], ['o'], ['m'], ['a'], ['n'], ['i'], ['a'], ['', ''], ['R'], ['o'], ['m'], ['a'], ['n'], ['i'], ['a'], [' '], ['1'], [' '], ['-'], [' '], ['0'], [' '], ['I'], ['t'], ['a'], ['l'], ['i'], ['a'], ['', ''], ['F'], ['r'], ['a'], ['n'], ['t'], ['a'], [' '], ['2'], [' '], ['-'], [' '], ['1'], [' '], ['R'], ['u'], ['s'], ['i'], ['a']] 

请您参考如下方法:

您可以使用非嵌套列表理解:

meciuri_2darray = [i.split() for i in meciuri.split('\n')] 
 
# [['Romania', '4', '-', '0', 'Franta'], 
#  ['Italia', '2', '-', '1', 'Rusia'], 
#  ['Franta', '3', '-', '0', 'Italia'], 
#  ['Rusia', '2', '-', '2', 'Romania'], 
#  ['Romania', '1', '-', '0', 'Italia'], 
#  ['Franta', '2', '-', '1', 'Rusia']]