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

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

10.04.2020, 20:14. Показов 3781. Ответов 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
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 20:19
расставьте тэги кода, пожалуйста.

Добавлено через 1 минуту
предполагаются, что элементы списка не повторяются?
0
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
10.04.2020, 20:28  [ТС]
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) #прошлый тег, только наоборот
0
8 / 6 / 2
Регистрация: 09.04.2020
Сообщений: 31
10.04.2020, 20:31
Anacoder, провернте на сайте такое действие:
пишите PYTHON в квадратных скобках, вставляете код, пишите /PYTHON в квадратных скобках.
Это вас просили сделать, а не расставить комментарии.
Или же можно выделить код и на панели нажать на кнопку PYTHON
И не стоит забывать, что первый элемент списка имеет индекс 0.
1
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
10.04.2020, 20:33  [ТС]
Благодарю, что разъяснили, сейчас сделаю

Добавлено через 50 секунд
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
s=input()
s=s.split()
mi=int(s[0])
ma=int(s[0])
for i in range(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[0] [len(s)]])
pmi=s.index(mi, [s[0] [len(s)]])
s.insert(pma, mi)
s.insert(pmi, ma)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 20:35
Python
1
2
3
4
5
6
7
8
9
10
11
# input
lst = list(map(int, input().split()))
 
# max and min elements
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=" ")
1
8 / 6 / 2
Регистрация: 09.04.2020
Сообщений: 31
10.04.2020, 20:37
Цитата Сообщение от DmitryOST Посмотреть сообщение
И не стоит забывать, что первый элемент списка имеет индекс 0.
↑↑↑
0
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
10.04.2020, 20:41  [ТС]
Благодарю Вас, Jabbson, ваше решение, несомненно, эргономичнее и питоничнее моего. Но всё же, можете, пожалуйста, указать на мою ошибку? Мне задачу не сдавать, для себя пишу, поэтому интересно было бы узнать, где это я ссылаюсь на элемент вне списка
0
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
10.04.2020, 20:44
Лучший ответ Сообщение было отмечено Anacoder как решение

Решение

Anacoder,
допустим у нас список [123,56,77,89] значить s[1] = 123. а теперь информация
list.index(x, [start [, end]]) Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)
откуда в списке с длиной 4 элемента будет индекс 123? вот ваша ошибка в этих строках
Python
1
2
pma=s.index(ma, [s[1] [len(s)]])
pmi=s.index(mi, [s[1] [len(s)]])
1
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
10.04.2020, 20:44  [ТС]
Подправил, спасибо за замечание
0
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
10.04.2020, 20:53  [ТС]
Semen-Semenich, благодарствую. Не подскажите, а как тогда нужно написать, чтобы индекс искался с начала списка и до его конца? А то когда я пишу
Python
1
2
pma=s.index(ma, [0, [len(s)]])
pmi=s.index(mi, [0, [len(s)]])
мне говорят slice indices must be integers or have an __index__ method. Какой- то индекс всё равно необходим. И есть ли какой-нибудь более простой способ узнавать индекс того или иного числа в списке?
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 20:54
Лучший ответ Сообщение было отмечено Anacoder как решение

Решение

Цитата Сообщение от Jabbson Посмотреть сообщение
max_el = lst.index(max(lst))
так?
1
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
10.04.2020, 20:57  [ТС]
Jabbson, да, я понял Ваш метод, но он ищет индекс наибольшего число. А можно ли как-то искать индекс конкретного числа в списке?
0
 Аватар для Miryz
291 / 131 / 58
Регистрация: 24.11.2019
Сообщений: 532
10.04.2020, 21:02
Я думаю следует видоизменить код для большей универсальности:
Python
1
2
3
4
5
6
lst = input()
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=" ")
1
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 21:05
Лучший ответ Сообщение было отмечено Anacoder как решение

Решение

Цитата Сообщение от Anacoder Посмотреть сообщение
Jabbson, да, я понял Ваш метод, но он ищет индекс наибольшего число. А можно ли как-то искать индекс конкретного числа в списке?
передавайте в list.index конкретное число и будет искать конкретное число.

lst.index(3) найдет индекс конкретного числа 3

Добавлено через 55 секунд
Цитата Сообщение от Miryz Посмотреть сообщение
lst = list(''.join(lst))
что тут происходит?
0
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
10.04.2020, 21:06  [ТС]
Всем спасибо, код заработал
0
 Аватар для Miryz
291 / 131 / 58
Регистрация: 24.11.2019
Сообщений: 532
10.04.2020, 21:08
Это для ввода без пробелов
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 21:11
Цитата Сообщение от Miryz Посмотреть сообщение
Это для ввода без пробелов
не совсем понял, можете привести пример? и еще почему вы считаете, что универсальность повысится?
0
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
10.04.2020, 21:13  [ТС]
Ещё один вопрос, а как конкретному элементу по индексу присвоить значение конкретного числа, переменной или элемента? Всё, если это list.insert, я разобрался
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
10.04.2020, 21:13
Цитата Сообщение от Miryz Посмотреть сообщение
Это для ввода без пробелов
Может тогда это
Python
1
2
lst = input()
lst = list(''.join(lst))
заменить на это
Python
1
lst = input().split()
И более того ваш вариант двузначные числа будет воспринимать как два однозначных числа.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2020, 21:13
Помогаю со студенческими работами здесь

Проблемы с работой по 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. Проблема работы заключается ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru