Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 26.02.2018
Сообщений: 125

Массив: Превратить заданный массив с несколькими уровнями вложенности в массив с одним уровнем вложенности.

23.09.2018, 15:08. Показов 2804. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Необходимо выполнить задание:

Дано массив:
['a', ['a', 1, 3], ['f', 7, [4, '4']], [{'lalala': 111}]].
Написать программу, которая превратит заданный массив с несколькими уровнями вложенности (массив с неоднотипными элементами) в массив с одним уровнем вложенности. То есть программа должна вывести массив с такими элементами:
['a', 'c', 1, 3, 'f', 7, 4, '4', {'lalala': 111}]


Для этой части задания работает данная программа:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def remove_extends(obj):
    if type(obj) is list:
        result = []
        for value in obj:
            result += remove_extends(value)
        return result
    else:
        return [obj]
 
lst = ['a', ['a', 1, 3], ['f', 7, [4, '4']], [{'lalala': 111}]]
 
result = remove_extends(lst)
 
print(result)
Но она срабатывает не для каждого массива.

При написании программы предусмотреть введение другого массива с другими данными в качестве контрольного примера для проверки корректности работы алгоритма.

Буду очень благодарна за помощь !

Добавлено через 11 минут
Например, для массива lst = {'a',1,'c', 1, 3, 'f', 7, 4, '4', {'lalala': 111}} выводит .
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.09.2018, 15:08
Ответы с готовыми решениями:

Преобразование в массив с одним уровнем вложенности
Есть масив: , ], ] Написать программу, которая преобразует заданный массив с несколькими уровнями вложенности (массив с неоднотипными...

Таблица с несколькими уровнями вложенности строк (vue2 + axios)
Ребята, привет! Я новичок во Vue - делал простые приложухи всегда, сейчас встрял со сложным компонентом. Использую vue2 + bootrstap-vue...

Добавить в массив (дерево) элемент со значением текущего уровня вложенности
Необходимо добавить в массив (дерево) элемент со значением текущего уровня вложенности. Трудности с определением уровня. Есть такая ф-я...

8
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
23.09.2018, 15:14
Dziuba,
Вам, что лень найти кнопочку Python для оформления кода? Или вы предпочитаете, чтобы все делали за вас - и в разделе С++ и в Python?
Python без оформления не является валидным кодом: здесь отступы это все.
И научитесь уже давать темам нормальные названия, конкретизирующие задачу.
0
0 / 0 / 0
Регистрация: 26.02.2018
Сообщений: 125
23.09.2018, 18:45  [ТС]
Хорошо, прийму к сведению. Спасибо за замечания.

Добавлено через 53 минуты
Цитата Сообщение от Garry Galler Посмотреть сообщение
Dziuba,
Вам, что лень найти кнопочку Python для оформления кода? Или вы предпочитаете, чтобы все делали за вас - и в разделе С++ и в Python?
Python без оформления не является валидным кодом: здесь отступы это все.
И научитесь уже давать темам нормальные названия, конкретизирующие задачу.
А эту тему возможно удалить, не знаете?
0
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
23.09.2018, 19:29
Цитата Сообщение от Dziuba Посмотреть сообщение
для массива lst = {'a',1,'c', 1, 3, 'f', 7, 4, '4', {'lalala': 111}}
Это вообще неправильная запись для Python, о чём и пишет интерпретатор.
До функции дело вообще не доходит

В этой записи фигурные скобки, значит, строится не список, а словарь, отсюда все проблемы
0
0 / 0 / 0
Регистрация: 26.02.2018
Сообщений: 125
23.09.2018, 22:20  [ТС]
А мне по заданию нужно предусмотреть ввод любого массива в качестве контрольного примера для проверки корректности работы разработанного алгоритма.

Добавлено через 1 минуту
Или вы думаете другой массив должен быть тоже списком?
0
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
23.09.2018, 22:49
Я не знаю, что именно Ваш преподаватель называет массивом. Формально массивов в python нет.
Но судя по всему, подразумеваются именно списки. И Ваша программа работает только со списками:
Python
1
if type(obj) is list:
0
0 / 0 / 0
Регистрация: 26.02.2018
Сообщений: 125
23.09.2018, 22:56  [ТС]
Но там же еще есть ветка else
Python
1
2
else:
        return [obj]
0
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
24.09.2018, 04:49
Лучший ответ Сообщение было отмечено Dziuba как решение

Решение

Основная ветка разворачивает списки.
Ветка else обрабатывает все остальные объекты. Она ничего не разворачивает - просто переносит объект в результат.
Поэтому если написать правильный словарь, он будет просто вложен в новый список:
{'lalala': 111} перейдёт в [{'lalala': 111}]
1
0 / 0 / 0
Регистрация: 26.02.2018
Сообщений: 125
24.09.2018, 11:56  [ТС]
Поняла, спасибо большое.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.09.2018, 11:56
Помогаю со студенческими работами здесь

Смоделировать объектную структуру произвольной вложенности: Контейнер – трехмерный массив
Доброе времени суток! Подскажите, пожалуйста, в каком направлении двигаться, какие классы создать: Смоделировать объектную структуру...

Иерархия treeView c 3-м уровнем вложенности
Помогите разобраться. как корректно построить иерархию для 3 вложенности в treeview, а именно для 3 классов, описывающих таблицы БД...

Сканирование с большим уровнем вложенности
Здравствуйте. 1) Подскажите, пожалуйста, как бы обойти ограничение NTFS системы на имя файла в 255-260 символов? Я сканирую некую...

Массив: Создайте двухмерный массив, где первым уровнем будет Имя, вторым уровнем будет Возраст.
Доброго времени суток, помогите пожалуйста 1)Создайте двухмерный массив, где первым уровнем будет Имя, вторым уровнем будет Возраст....

Не могу определиться с уровнем вложенности и почему яндекс долго неиндексирует
С меню нужно в выпадающем нажать на категори.- подкатегорию-статья 4ур Стоит карта, нажав на которую, я так понимаю, уровень вложенности...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru