Страницы

Поиск по вопросам

четверг, 16 мая 2019 г.

Как получить числа из строки и корректно отсортировать?

Есть файл с числами через запятую, без пробелов. Необходимо считать его и вывести в консоль отсортированный список по возрастанию и убиванию. Вот мои попытки:
import re
try: file_path = open(input('Введите путь к файлу: ')) except IOError: print('File not found') file_value = file_path.read() file_numbers = re.findall('\d+', file_value) # print(file_numbers) # print(type(file_numbers)) sorted(file_numbers, key=int) print(file_numbers) sorted(file_numbers, key=int, reverse=True) print(file_numbers)
Собственно результат:
['6', '2', '3', '13', '5', '1', '7', '9', '18', '20', '16', '12', '15', '14', '10', '11', '17', '9', '19'] ['6', '2', '3', '13', '5', '1', '7', '9', '18', '20', '16', '12', '15', '14', '10', '11', '17', '9', '19']
В чем ошибка и как поправить? :(
Так же были попытки сделать вот так:
try: file_path = open(input('Введите путь к файлу: ')) except IOError: print('File not found') file_value = file_path.read() # file_numbers = re.findall('\d+', file_value) file_numbers = [] for i in file_value: try: num = int(i) file_numbers.append(num) except ValueError: continue # print(file_numbers) # print(type(file_numbers)) sorted(file_numbers, key=int) print(file_numbers) sorted(file_numbers, key=int, reverse=True) print(file_numbers)
И на выходе получил вообще бред:
[6, 2, 3, 1, 3, 5, 1, 7, 9, 1, 8, 2, 0, 1, 6, 1, 2, 1, 5, 1, 4, 1, 0, 1, 1, 1, 7, 9, 1, 9] [6, 2, 3, 1, 3, 5, 1, 7, 9, 1, 8, 2, 0, 1, 6, 1, 2, 1, 5, 1, 4, 1, 0, 1, 1, 1, 7, 9, 1, 9]


Ответ

И на выходе получил вообще бред:
Ваш код sorted(file_numbers, key=int) правильно был написан, но sorted возвращает новый отсортированный список, не изменяя исходный, поэтому вам нужно было сделать так:
file_numbers = sorted(file_numbers, key=int)
Можно отсортировать "на месте", как вы и хотели, но для этого нужно будет использовать sort
file_numbers.sort(key=int)

Комментариев нет:

Отправить комментарий