Я пишу функцию mergesort3, которая должна принимать массив чисел или значений и делить их на 3 отдельных массива для сортировки - PullRequest
0 голосов
/ 25 января 2020

У меня проблема с моим кодом, так как он не будет выполнен и отображает сообщение TypeError в формате: list indices must be integers or slices, not list.

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

with open(filelocation) as fl:
   line = fl.readline()
   while line:
       line = line.split()
        for i in range(1, len(line)):
           # converting read elements into integer values for sorting
            line[i] = int(line[i])
        input.append(line)
       line = fl.readline()
with open('merge3.txt', 'w') as f:
    for i in input:
        mergeSort3(input[i], 0, 1 / 3 * len(input), 2 / 3 * len(input), len(input), input())
        print(input)

Ошибка появляется в последних 2 строках код, или, скорее, оператор mergeSort3, когда я вызываю параметры моей начальной функции: def mergeSort3(arr1, low, mid1, mid2, high, arr2). Я также пишу свой код в Python, хотя это, вероятно, не проблема. Любая помощь приветствуется!

По сути, я ожидаю, что я смогу открыть файл data.txt и прочитать каждое из значений, а затем отсортировать эти данные с помощью сортировки слиянием / 3 (разделив массивы на трети) и запишите эти данные в новый текстовый файл с именем merge3.txt.

1 Ответ

0 голосов
/ 25 января 2020

Когда вы добавляете line к input, line представляет собой список целых чисел. Следовательно, input - это список списков.
Если вы введете l oop - input, i будет одним из этих списков.
Затем вы попытаетесь индексировать input со списком. Отсюда ошибка, указывающая на то, что вы не можете использовать список в качестве индекса.

...