Как ввести отрицательные числа в список - PullRequest
0 голосов
/ 10 ноября 2018

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

list1 = list(input())
list2 = list(input())
mergelist = list1 + list2

print(mergelist)


def bubble_sort(X):
    nums = list(X)
    for i in range(len(X)):
        for j in range(i+1, len(X)):
            if X[j] < X[i]:
                X[j], X[i] = X[i], X[j]
    return X

mergelist = bubble_sort(mergelist)
strmergelist = str(mergelist)

strmergelist = strmergelist.replace("'", '')
strmergelist = strmergelist.replace(",", '')
strmergelist = strmergelist.strip('[]')
strmergelist = strmergelist.strip()

print(strmergelist)

Вывод для списков без негативов:

1 2 3 4 4 5 5

Однако с негативами становится:

- - - - 1 2 3 3 4 4 5

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

['1', ' ', '-', '2', ' ', '3', '3', ' ', '-', '4', ' ', '-', '4', ' ', '-', '5']

1 Ответ

0 голосов
/ 10 ноября 2018

list() не анализирует строку в списке целых чисел, она превращает итерируемые элементы в список элементов. Чтобы прочитать список из консоли, попробуйте что-то вроде:

def read_list():
    """
    read a list of integers from stdin
    """
    return list(map(int, input().split()))

list1 = read_list()
list2 = read_list()

input.split() читает одну строку ввода пользователя и разделяет ее пробелами - в основном, словами.

int() может преобразовать строку в целое число.

map(int, ...) возвращает итерацию, которая применяется int() к каждому «слову» пользовательского ввода.

Последний вызов list() превратит итерируемое в список.

Это должно обрабатывать и отрицательные числа.

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

print(' '.join(mergelist))
...