用户输入以下内容:
3
1 2
1 2 3
1 2 3 4
1 2 3 4 5
如果每一行都是单独的输入,那么必须逐行读取输入。
(例如,阅读'3',然后阅读'1,2 ......等)。
您如何将数据转换为如此显示的列表?:
list1 = [
[3],
[1,2],
[1,2,3],
[1,2,3,4],
[1,2,3,4,5]
]
到目前为止我所拥有的:
def format():
user_input = []
uInput = input()
uInput = uInput.replace(" ", "") # Get rid of the spaces in the input
user_input.append(uInput) # Append values to list
return user_input
但这是有问题的,因为转弯值作为字符串返回,我将不得不调用函数X次以获得所有输入(行)值。
答案 0 :(得分:0)
您可以将一行数字划分为数字列表,如:
def split_ints_to_list(data):
return [int(x) for x in data.split()]
然后,您可以将其中的多个转换为列表,例如:
list_of_lists = [split_ints_to_list(line) for line in input_data]
这两个都使用list comprehension来构建列表。
input_data = [x.strip() for x in """
3
1 2
1 2 3
1 2 3 4
1 2 3 4 5
""".split('\n')[1:-1]]
print(input_data)
for line in input_data:
print(split_ints_to_list(line))
list_of_lists = [split_ints_to_list(line) for line in input_data]
print(list_of_lists)
['3', '1 2', '1 2 3', '1 2 3 4', '1 2 3 4 5']
[3]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
[[3], [1, 2], [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5]]