Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/89: Рейтинг темы: голосов - 89, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 02.02.2017
Сообщений: 18

Работа со списками

06.03.2017, 21:31. Показов 17891. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, многоуважаемые форумчане.
Задача следующая:
Дан произвольный список из целых чисел. Получите НОВЫЙ список из элементов исходного, выполнив следующие условия:
если элемент кратен двум, то разделить его на 4, если не кратен, то умножить на два.

Мой вариант решения:

Python
1
2
3
4
5
6
7
ls3 = [2, 7, 5, 6, 9, 15]
for i in ls3:
    if i % 2 == 0:
        i / 4
    elif i % 2 != 0:
        i * 2
print(...)
В итоге просто выводится исходный список. Перепробовал всевозможные махинации, но увы.. Как сделать так, чтобы цикл заработал и как организовать правильный вывод результата?

Знаю, что задачка довольно простая, прошу понять и простить новичка. Спасибо за внимание.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.03.2017, 21:31
Ответы с готовыми решениями:

Работа со списками Python 3
Здравствуйте, нужна помощь с задачей по питону: Рассматривается двумерное пространство, множество X точек в этом пространстве и круг С в...

Работа со списками в Python
Помогите со списками пожалуйста. например: даны два списка a ] #2x^4-4x^2+1 (первый элемент это коэффициент, а второй степень) b ]...

Работа со списками
Помогите написать код please. Нужно -> Сформировать новый список, состоящий из номеров элементов, которые являются четными числами...

10
77 / 76 / 57
Регистрация: 07.08.2016
Сообщений: 173
06.03.2017, 21:52
Во-первых, когда вы проходите циклом по списку, в переменную i попадают поочерёдно КОПИИ элементов списка. Т.е. изменение i на списке никак не отражается. Нужно проходить не по элементам списка, а по его индексам, по числам от 0 до len(ls3) - 1. И обращаться к элементам по индексам.

Тогда решение будет такое:
Python
1
2
3
4
5
6
7
ls3 = [2, 7, 5, 6, 9, 15]
for i in range(len(ls3)):
    if ls3[i] % 2 == 0:
        ls3[i] /= 4
    else:
        ls3[i] *= 2
print(ls3)
Во-вторых, даже в задание выделено, что нужно получить новый список, а вы пытаетесь изменить старый. В этом случае можно использовать оба вида цикла.

Так:
Python
1
2
3
4
5
6
7
8
ls3 = [2, 7, 5, 6, 9, 15]
new_list = []
for i in range(len(ls3)):
    if ls3[i] % 2 == 0:
        new_list.append(ls3[i] / 4)
    else:
        new_list.append(ls3[i] * 2)
print(new_list)
или так:
Python
1
2
3
4
5
6
7
8
ls3 = [2, 7, 5, 6, 9, 15]
new_list = []
for i in ls3:
    if i % 2 == 0:
        new_list.append(i / 4)
    else:
        new_list.append(i * 2)
print(new_list)
1
 Аватар для Ennjin
103 / 81 / 54
Регистрация: 25.11.2016
Сообщений: 278
06.03.2017, 22:51
Более короткий вариант записи
Python
1
2
3
ls3 = [2, 7, 5, 6, 9, 15]
new_list = [i / 4 if i % 2 == 0 else i * 2 for i in ls3]
print(new_list)
3
0 / 0 / 0
Регистрация: 02.02.2017
Сообщений: 18
07.03.2017, 13:39  [ТС]
Задача 2:
Дан список, заполненный произвольными целыми числами, получите новый список, элементами которого будут квадратные корни элементов исходного списка, но только если результаты извлечения корня не имеют десятичной части и
если такой корень вообще можно извлечь
Пример: Дано: [2, -5, 8, 9, -25, 25, 4] Результат: [3, 5, 2]
-
Проблема с ошибкой: math domain error. Можно ли при решении этой задачи использовать math.sqrt()? Или стоит завести некую переменную sqrt, которая будет возводиться в степень 1/2. Также интересует условие на отбрасывание чисел, с десятичной частью. Если при нахождении корня, число получается не типа int, то remove его из списка? Или проверку можно с помощью деления // оформить?
0
 Аватар для Ennjin
103 / 81 / 54
Регистрация: 25.11.2016
Сообщений: 278
07.03.2017, 14:00
Лучший ответ Сообщение было отмечено Arthuric как решение

Решение

Arthuric,
Python
1
2
3
numbers = [2, -5, 8, 9, -25, 25, 4]
result = [int(i) for i in range(max(numbers)) if int(i) ** 2 in numbers]
print(result)
1
0 / 0 / 0
Регистрация: 02.02.2017
Сообщений: 18
07.03.2017, 14:19  [ТС]
Ennjin, какой интересный подход! Прекрасно.
Но интерес меня все же не отпускает, если бы можно разбирать извлечение корня в обратную сторону, уместно было бы применять math.sqrt? Т.к. если число отрицательное, выводится ошибка - math domain error. Пробовал писать условие неотрицательности, но, видимо, что-то не так сделал. Попробую еще. Благодарю всех за помощь
0
 Аватар для Ennjin
103 / 81 / 54
Регистрация: 25.11.2016
Сообщений: 278
07.03.2017, 14:32
Вариант с math.sqrt
Python
1
2
3
4
import math
numbers = [2, -5, 8, 9, -25, 25, 4]
result = [int(math.sqrt(i)) for i in numbers if i > 0 and math.sqrt(i).is_integer()]
print(result)
1
0 / 0 / 0
Регистрация: 02.02.2017
Сообщений: 18
07.03.2017, 17:27  [ТС]
Задача 3:
дан список: [2, 4, 7, 1, 2, 5, 4]. Необходимо удалить из него элементы,имеющие повторения. Ответ [7, 1, 5]

Python
1
2
3
4
5
ls3 = [2, 4, 7, 1, 2, 5, 4]
for i in ls3: 
    if ls3.count(i) >= 2:
        del ls3[i]      
print(ls3)
Работаю пока с исходным списком. Пробовал сделать через remove и результат был почти тот, что нужен, если бы только remove не удалял лишь первое вхождение. Этот код выводит ровно то, что должен был очистить - [2, 4, 2, 4]. Как записать правильный ответ в новый список?
0
 Аватар для Ennjin
103 / 81 / 54
Регистрация: 25.11.2016
Сообщений: 278
07.03.2017, 17:49
Python
1
2
ls3 = [2, 4, 7, 1, 2, 5, 4]
print(set(ls3))
0
0 / 0 / 0
Регистрация: 02.02.2017
Сообщений: 18
07.03.2017, 18:16  [ТС]
Ennjin, set использовал в другой задаче. А тут надо удалить повторяющиеся элементы полностью. Т.е. 2 имеет повторяющуюся двойку, значит обе двойки удаляем. И две четверки. Остаться должны 7, 1, 5
0
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
07.03.2017, 18:44
Python
1
2
ls3 = [2, 4, 7, 1, 2, 5, 4]
print([i for i in ls3 if ls3.count(i) == 1])
Добавлено через 6 минут
или как вы хотите изменяя основной список
Python
1
2
3
4
5
6
ls3 = [2, 4, 7, 1, 2, 5, 4]
list_unikum = [i for i in ls3 if ls3.count(i) == 1]
for i in reversed(range(len(ls3))):
    if ls3[i] not in list_unikum:
        del ls3[i]
print(ls3)
но без дополнительного не обойтись так как если вы находите повторяющиеся элементы в основном и один из них удалите то второй уже будет единственным и count(i) будет 1 хотя изначально был 2 отсюда следует что один из парных элементов останется в списке что нарушает условие
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.03.2017, 18:44
Помогаю со студенческими работами здесь

Работа со списками
Дан список A, количество элементов которого N. Сформировать новый список B того же размера по такому правилом: элемент Bk равен среднему...

Работа со списками
Помогите, пожалуйста, я не могу понять условия и что от меня хотят! chart_manipulation(chart: list, shuffle: list) -> list...

Работа со списками
Дано целое число K (> 0) и целочисленный массив размера N. Поменять местами последнюю серию массива и его серию с номером K. Если серий в...

Работа со списками
Не правильно читает гласные в словах, помогите в чём ошибка? (str(input('Напишите слово "0":'))) (str(input('Напишите...

Работа со списками
Дан список вещественных чисел. а) Ко всем отрицательным элементам прибавить элемент с номером m1, к остальным — элемент с номером m2. ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru