Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93

Проблемы с работой со списками python

10.04.2020, 20:14. Показов 3793. Ответов 37

Студворк — интернет-сервис помощи студентам
Пишу вот такой код:
s=input()
s=s.split()
mi=int(s[1])
ma=int(s[1])
for i in range(1, len(s)):
if int(s[i])>int(ma):
ma=s[i]
if int(s[i])<int(mi):
mi=int(s[i])
pma=s.index(ma, [s[1] [len(s)]])
pmi=s.index(mi, [s[1] [len(s)]])
s.insert(pma, mi)
s.insert(pmi, ma)
для решения этой задачи: Поменять местами самый большой и самый маленький элементы списка. Код в целом работает топорно, выдаёт эту ошибку в разных вариациях: string index out of range. Где может быть ошибка? Я как-то неверно обращаюсь к элементу списка?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.04.2020, 20:14
Ответы с готовыми решениями:

Проблемы с работой со списками python
Добрый день! Решаю вот такую задачу: Дан текстовый файл, содержащий целые числа. Удалить из него все четные числа. вот таким кодом: f...

Проблемы с работой со списками python
Решаю вот такую задачу: удалить из файла все чётные числа вот таким кодом:f = open(&quot;Anaconda.txt&quot;, &quot;r&quot;) data =...

Проблемы с работой со строками python
Добрый день! Я пытаюсь редактировать строку вот таким вот кодом: isk=str(input()) for i in range(0, len(isk)): if str(isk)=='A': ...

37
 Аватар для Miryz
291 / 131 / 58
Регистрация: 24.11.2019
Сообщений: 532
10.04.2020, 21:13
Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
 lst = list(map(int, input().split()))
5671
>>> max_el = lst.index(max(lst))
>>> min_el = lst.index(min(lst))
>>>
>>> # swap
>>> lst[max_el], lst[min_el] = lst[min_el], lst[max_el]
>>>
>>> print(*lst, sep=" ")
5671
Python
1
2
3
4
5
6
7
8
>>> lst = input()
5671
>>> lst = list(''.join(lst))
>>> max_el = lst.index(max(lst))
>>> min_el = lst.index(min(lst))
>>> lst[max_el], lst[min_el] = lst[min_el], lst[max_el]
>>> print(*lst, sep=" ")
5 6 1 7
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 21:16
Цитата Сообщение от Miryz Посмотреть сообщение
5 6 1 7
то есть вы сократили ввод до цифр от 0 до 9 вместо любых и это стало более универсально?

Добавлено через 42 секунды
Цитата Сообщение от Anacoder Посмотреть сообщение
Ещё один вопрос, а как конкретному элементу по индексу присвоить значение конкретного числа, переменной или элемента?
lst[index] = value
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
10.04.2020, 21:16
И если уж вообще по хорошему делать, то надо так:
Python
1
lst = map(int, input().split())
Так они сразу станут числами, а не строками.
0
 Аватар для Miryz
291 / 131 / 58
Регистрация: 24.11.2019
Сообщений: 532
10.04.2020, 21:17
Ну если писать слитно, то от 0 до 9, а если раздельно, то также.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 21:18
Цитата Сообщение от unfindable_404 Посмотреть сообщение
lst = map(int, input().split())
Цитата Сообщение от Jabbson Посмотреть сообщение
lst = list(map(int, input().split()))
как в 6 сообщении, да?
1
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
10.04.2020, 21:20
Цитата Сообщение от Jabbson Посмотреть сообщение
как в 6 сообщении, да?
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 21:20
Цитата Сообщение от Miryz Посмотреть сообщение
Ну если писать слитно, то от 0 до 9, а если раздельно, то также.
Цитата Сообщение от Miryz Посмотреть сообщение
lst = input()
lst = list(''.join(lst))
вот тут join что объединяет?
0
10.04.2020, 21:21

Не по теме:


Вы меня простите, но я сваливаю. Вам и вдвоём тут не плохо)

0
 Аватар для Miryz
291 / 131 / 58
Регистрация: 24.11.2019
Сообщений: 532
10.04.2020, 21:22
Ну да, можно записать как lst = list(lst)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 21:25
Цитата Сообщение от Miryz Посмотреть сообщение
Ну если писать слитно, то от 0 до 9, а если раздельно, то также.
приведите пример, где вы вводите элементы 1, 10, 100 и они после обработки превращаются в [100, 10, 1]
0
 Аватар для Miryz
291 / 131 / 58
Регистрация: 24.11.2019
Сообщений: 532
10.04.2020, 21:27
Также, как у вас
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 21:28
Цитата Сообщение от Miryz Посмотреть сообщение
Ну да, можно записать как lst = list(lst)
можно, но это не то, что Вы делаете, вы берете строку и делаете ей join, а потом разбиваете на элементы по одному символу.

Добавлено через 1 минуту
вот мой пример

Python
1
2
3
4
5
6
7
8
9
10
>> lst = list(map(int, input().split()))
1 10 100
 
>> max_el = lst.index(max(lst))
>> min_el = lst.index(min(lst))
 
>> lst[max_el], lst[min_el] = lst[min_el], lst[max_el]
 
>> print(*lst, sep=" ")
100 10 1
0
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
10.04.2020, 21:37
Miryz, а вы заметили что ваш код не выполнил задачу?
Python
1
2
lst = list(map(int, input().split()))
5671
Python
1
2
>>> print(*lst, sep=" ")
5671
то есть что ввели то и вывели. вам Jabbson, конкретно объясняет почему так

Добавлено через 2 минуты
сравните
Python
1
2
3
4
5
6
7
8
>>> lst = list(map(int, list(input())))
5671
>>> max_el = lst.index(max(lst))
>>> min_el = lst.index(min(lst))
>>> lst[max_el], lst[min_el] = lst[min_el], lst[max_el]
>>> print(*lst)
5617
>>>
0
 Аватар для Miryz
291 / 131 / 58
Регистрация: 24.11.2019
Сообщений: 532
10.04.2020, 21:42
Это не мой код.
Вот я написал финальную версию:
Python
1
2
3
4
5
6
7
8
9
lst = input()
if lst.find(' ') > 0:
    lst = list(map(int, lst.split()))
else:
    lst = list(lst)
max_el = lst.index(max(lst))
min_el = lst.index(min(lst))
lst[max_el], lst[min_el] = lst[min_el], lst[max_el]
print(*lst, sep=" ")
0
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
10.04.2020, 21:46
а можно просто информировать при вводе
Python
1
lst = list(map(int,input('ввод чисел через пробел: ').split()))
и sep=" " тут не нужен для пробела.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 21:48
1) как это-то более универсально? Как по мне так шматок непонятности с условиями какой-то...
2) find? шта? то есть ввести первый элемент пробел и уже не подходит? Хотя бы
Code
1
' ' in lst
3) зачем lst = list(lst), вы же потом все равно "буквы" сравниваете, а не числа
4) если можно обойтись без lst = list(lst), то фактически мы возвращаемся к моему коду
0
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
10.04.2020, 21:52
Цитата Сообщение от Jabbson Посмотреть сообщение
вы же потом все равно "буквы" сравниваете, а не числа
ну для единиц это еще прокатит. грабли на которые потом автор наступит сам когда попытается сравнить строку с числом
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 21:53
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
и sep=" " тут не нужен для пробела.
вот тут категорически согласен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2020, 21:53
Помогаю со студенческими работами здесь

Проблемы с работой по Python. Memory error
При попытке запустить , выходит ошибка. Я начинаюший в datascince, пытаюсь запустить машинное обучение ) типа предсказание . Может кто...

Проблемы с работой батника
Добрый день, помогите пожалуйста, ступор уже второй день. Нужен bat-ник, который будет искать pdf файлы во всех вложенных папках, находя...

Проблемы с работой системы
Всем привет! Собрал систему: Материнская плата: ASUS ROG STRIX B450-I GAMING Процессор: AMD Ryzen 7 2700 OEM YD2700BBM88AF ...

Проблемы с подключением и работой с БД
НЕ получается подключить БД. Работаю с phpmyadmin через openserver. Вот код который пишу. (касати mysql_connect, mysql_select_db,...

Проблемы с работой ТП 7.0 на Windows 7
Доброе время суток! У меня проблема с работой Турбо Паскаля 7,0. Ноутбук ASUS К50IJ OC Windows 7 32-bit. Проблема работы заключается ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru