在python中将输入读取为嵌套列表

在python中将输入读取为嵌套列表,python,nested-lists,Python,Nested Lists,我是python新手。 我想将stdin中的输入读取为嵌套列表 Stdin: student1 90 student2 85 student3 98 我的名单如下: student = [['student1',90],['student2',85],['student3',98]] 有没有什么方法可以让我在不需要任何额外空间的情况下使用列表理解来阅读输入 这是一种方法 mystr = 'student1 90\nstudent2 85\nstudent3 98' [[i[0], int(

我是python新手。 我想将stdin中的输入读取为嵌套列表

Stdin:

student1 90
student2 85
student3 98
我的名单如下:

student = [['student1',90],['student2',85],['student3',98]]
有没有什么方法可以让我在不需要任何额外空间的情况下使用列表理解来阅读输入

这是一种方法

mystr = 'student1 90\nstudent2 85\nstudent3 98'

[[i[0], int(i[1])] for i in (k.split() for k in mystr.split('\n'))]

# [['student1', 90], ['student2', 85], ['student3', 98]]
现在让我们把它分解一下:

  • 创建一个空列表
  • 继续阅读stdin(这里有str)
  • 通过拆分将read元素添加到列表中(它将创建一个新列表)
  • 将最后插入项的第二个元素转换为整数
  • 编辑 这就是它的运行方式:

    In [1]: my_list = []
       ...: while True:
       ...:   read = input()
       ...:   my_list.append(read.split())
       ...:   my_list[-1][1] = int(my_list[-1][1])
       ...:   print(my_list)
       ...:   
    student 1
    [['student', 1]]
    student 2
    [['student', 1], ['student', 2]]
    student 3
    [['student', 1], ['student', 2], ['student', 3]]
    

    您必须将列表中的第二个元素更改为整数。除此之外,还有一个很好的解决方案。
    In [1]: my_list = []
       ...: while True:
       ...:   read = input()
       ...:   my_list.append(read.split())
       ...:   my_list[-1][1] = int(my_list[-1][1])
       ...:   print(my_list)
       ...:   
    student 1
    [['student', 1]]
    student 2
    [['student', 1], ['student', 2]]
    student 3
    [['student', 1], ['student', 2], ['student', 3]]