在列表中存储多个未格式化的用户输入

时间:2018-02-25 20:59:37

标签: python list

用户输入以下内容:

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次以获得所有输入(行)值。

1 个答案:

答案 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]]