Python:将多行输入转换为列表

时间:2013-09-20 07:06:54

标签: python list input python-3.x multiline

我有一个编程任务,我需要输入的所有输入都是多线的。 例如:

4 3
10 3
100 5
1000000000 8

或:

7 8 666
8 7 666
10 16 273

我正在尝试将这些行转换为列表。我无法使用文件,我需要能够使用输入语句将它们输入到程序中。

我遇到的问题是,我希望输出为:

[['4', '3'], ['10', '3'], ['100', '5'], ['1000000000', '8']]

所以我可以用它来完成我的程序的其余部分。但我得到的只是:

[['4', '3']]

我一直试图使用的代码是:

aString = input(" > ")
aString_list = [x for x in (y.split() for y in aString.split('\n')) if x]
print(aString_list)

我很困惑如何让它读取其他行。感谢。

2 个答案:

答案 0 :(得分:2)

代码的问题是,只要您点击 Enter input()就会停止,要获得连续输入,您需要使用while循环或{ {1}}循环并接受输入,直到用户输入标记值:

使用for-loop和for

iter

使用def multiline_input(sentinel=''): for inp in iter(input, sentinel): yield inp.split() ... >>> lis = list(multiline_input()) 1 2 3 400 500 600 a b c >>> lis [['1', '2', '3'], ['400', '500', '600'], ['a', 'b', 'c']] 循环:

while

答案 1 :(得分:0)

这可能是我不理解的东西,但是在这里执行此类代码

aString = """
4 3
10 3
100 5
1000000000 8
"""

aString_list = [x for x in (y.split() for y in aString.split('\n')) if x]
print(aString_list)

我们得到一个结果:

[['4', '3'], ['10', '3'], ['100', '5'], ['1000000000', '8']]