Ошибка индекса индекса вне диапазона для индекса в диапазоне списка - PullRequest
2 голосов
/ 28 октября 2019

Я пытаюсь проиндексировать список, чтобы получить первый (0) и второй (1) элементы для дальнейших вычислений. Мой код в настоящее время выглядит следующим образом:

def calculate_scores(list):
    sat = list[0]
    gpa = list[1]
    weighted_sat = (sat / 160)
    weighted_gpa = (gpa * 2)

Это функция, которую я хочу использовать для расчетов. Часть, где эта функция вызывается в моем главном, выглядит следующим образом:

testscores = []
semestergrades = []

testscores.append(floatlist[0:4])
semestergrades.append(floatlist[4:])

calculate_scores(testscores)

Список, из которого извлекается список testcores, имеет длину 8 элементов, все они всплывают - однако, когда я пытаюсь запустить этоткод, который дает мне ошибку 'list index out of range' для части, где я пытаюсь установить переменную 'gpa' равной list [1]. Тем не менее, кажется, что можно запустить первую часть, установив переменную 'sat' равной list [0]. Есть идеи, почему это происходит?

1 Ответ

2 голосов
/ 28 октября 2019

Вы используете .append(), когда вы должны либо использовать .extend(), либо просто использовать результат среза:

# floatlist = [0.5, 1.5, 2.5, 3.5, 4.5, 5.5]
testscores = []
testscores.append(floatlist[0:4])
# testscores = [[0.5, 1.5, 2.5, 3.5]]

Итак, как вы это делаете в настоящее время, testscoresсписок с одним элементом, этот элемент floatlist[0:4]. Когда вы пытаетесь использовать второй элемент (index 1), вы получаете IndexError.

Вы можете использовать .extend() вместо .append(), чтобы добавить все элементы в данном итерируемом списке. Или вы можете просто сделать

testscores = floatlist[0:4]

, так как при нарезке списка все равно создается копия оригинала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...