Как вводить разные списки, используя один цикл в 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()]

я пытался использовать «для», как показано ниже, но это не работает, потому что дает «i» равное количество списков, но не копирует результаты в список.

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

так что, пожалуйста, помогите мне, если вы можете, спасибо.

Возможно, вам стоит попробовать изучить словарь в Python. Это было бы более подходящим для этого варианта использования.

Anuneet Anand 05.05.2022 13:08
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
27
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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 ]

конечно, это хороший способ, но я хочу скопировать результаты в подготовленные пустые списки, мой вопрос - всего лишь пример, чтобы найти эту возможную функцию. спасибо кстати

Mohsen Salimi 05.05.2022 13:11

@MohsenSalimi Проверьте ответ.

user2736738 05.05.2022 13:14

Не совсем понятно, как заставить specific_list указывать на тот же список, что и, например. math только на основе строки 'math' из вашего ответа.

matszwecja 05.05.2022 13:22

@matszwecja В принципе, это можно сделать разными способами, и я подумал, что это не главная деталь. Поскольку основная часть ОП отсутствовала, это обновление списка. Одним из способов было бы просто перечислить список и обработать оттуда или просто перебрать ссылки на список.

user2736738 05.05.2022 13:25

я считаю, что таким образом входные данные добавляются к Specific_list! я не знаю, понимаю ли я вторую часть вашего ответа или нет, но я хочу, чтобы баллы добавлялись к списку математики, географии и естественных наук, и я не хочу писать это 3 раза ... представьте, если бы их было 100 списков!

Mohsen Salimi 05.05.2022 13:26

@MohsenSalimi Проверьте ответ сейчас. Это вернет список списка, и вам не нужно ничего жестко кодировать

user2736738 05.05.2022 13:29

@matszwecja Проверьте ответ. Я немного прояснил ситуацию. Спасибо за предыдущий отзыв.

user2736738 05.05.2022 13:32

@user2736738 user2736738 слишком сложно, но теперь работает, так что отрицательный голос удален.

matszwecja 05.05.2022 13:33

@matszwecja Только представьте, если предметов 10-25, в вашем решении им пришлось бы написать 20 назначений списков. В этом случае, как только у вас есть словарь, вот и все. (Вы можете легко получить такие диски из баз данных). Кстати, я не DV ваше решение (просто для ясности). Удивительно, но Op любит ваше решение, но оно точно такое же, как и мое предыдущее решение .... странное поведение SO.

user2736738 05.05.2022 13:36

@ user2736738 Я согласен, что словарь, вероятно, был бы лучше, но OP сказал, что ему нужно поместить результаты «в подготовленные пустые списки», поэтому я выполнил это требование.

matszwecja 05.05.2022 13:36
Ответ принят как подходящий

2 проблемы:

1. math = science = geography = [] — это присвоит та же ссылка всем переменным. Это означает, что каждое изменение, которое вы делаете в одном из списков, будет отражено в других.

2.

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

Здесь вы меняете ссылку i, когда вы назначаете ей новый список, что делает его больше не тем же самым, что и каждый из math, science, geography. Вам необходимо отредактировать каждый из заданных списков на месте. Имея в виду эти две вещи, если вы перепишете свой код таким образом, он будет работать:

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

Другие вопросы по теме