如何在python中使用一个循环输入到不同的多个列表

How to input to differant multiple lists using one loop in pthon

嗨,我是 python 的新手,我有一个问题,我找不到任何答案。

好的,假设我们有 5 个学生,我们想在 3 节课(例如,数学、科学、地理)中获取他们的分数,并且我们有以这些课命名的空列表,我想知道我们如何输入他们的分数使用一个循环而不是通过为这个列表一个一个地编写代码来在这个列表中得分。 分数输入就像

80 90 95 40 70
70 50 60 50 50
80 90 90 80 80

这些是我们的名单:

    math = science = geography =[]

而且我知道如何输入多个变量:

[int(x) for x in input().split()]

我尝试像下面那样使用 'for',但它不起作用,因为它提供了 'i' 等量的列表,但没有将结果复制到列表中。

i = []
for i in math, science, geography:
        i = [int(x) for x in input().split()]

所以如果可以的话请帮助我,谢谢。

d ={}
for i in ['math', 'science', 'geography']:
        d[i] = [int(x) for x in input().split()]

您可以简单地将其存储在字典中,其中字典键是主题,项目是包含学生获得的分数的列表。

{'math': [1, 2, 3, 4, 5], 'science': [6, 7, 8, 9, 0], 'geography': [1, 2, 3, 4, 5]}

如果您准备了 3 个单独的列表并想要填充它们,您可以简单地执行此操作

subject_lists = []
for i in ['math', 'science', 'geography']:
        subject_lists.append([int(x) for x in input().split()])

现在 subject_lists 按顺序包含所有列表。如果您在某处指定了一些顺序,第一个列表用于主题 1,第二个列表用于主题 2,您可以轻松使用它。

   subject_map = {
     'math':0,
     'science':1,
     'geo':2
   }

所以现在如果你必须访问主题 math 来获得学生的分数,你可以简单地这样想

subject_index = subject_map['math']
math_scores = subject_lists[subject_index ]

2 个问题:

1。 math = science = geography = [] - 这会将 相同的引用 分配给所有变量。这意味着您对其中一个列表所做的每项更改都会反映在其他列表中。

2.

for i in math, science, geography:
        i = [int(x) for x in input().split()]

在这里,当您向它分配新列表时,您正在更改引用 i 指向的内容,从而使其不再与每个 math, science, geography 相同。 您需要编辑每个给定列表 in-place。 考虑到这两点,如果您像这样重写代码,它将起作用:

math = []
science = []
geography = []
for i in math, science, geography:
        i.extend([int(x) for x in input().split()])