Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/30: Рейтинг темы: голосов - 30, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 04.12.2019
Сообщений: 16

Переписать числа так что бы в начале были положительные числа, а в конце отрицательные

17.07.2021, 15:14. Показов 6434. Ответов 37

Студворк — интернет-сервис помощи студентам
Есть одномерный массив, его нужно заполнить рандомными числами от -10 до 10, и в другой одномерный массив записать числа так что бы в начале были положительные числа, а в конце отрицательные
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.07.2021, 15:14
Ответы с готовыми решениями:

Переставить числа в массивах так, чтобы в начале оказались все положительные элементы, а в конце отрицательные
Заданы три одномерных масива.Переставиты числа в массивах таким образом, чтобы в начале массивов оказались все положительные элементы, а в...

Преобразовать матрицу так, чтобы в начале каждой строки были положительные элементы, а в конце отрицательные
Рассчитал матрицу по исходной формуле. Нужно преобразовать матрицу так, чтобы в начале каждой строки должны быть собраны её неотрицательные...

как переставить числа в очереди таким образом, чтобы в начале последовательности оказались все положительные числа, а в конце отрицательные?
как переставить числа в очереди таким образом, чтобы в начале последовательности оказались все положительные числа, а в конце...

37
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
17.07.2021, 15:43
Лучший ответ Сообщение было отмечено xSam как решение

Решение

xSam,
Python
1
2
3
4
5
from random import randint
a = [randint(-10,10) for _ in range(10)]
print(a)
a.sort(key=lambda x: (abs(x) != x, x==0))
print(a)
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
17.07.2021, 22:33
Gdez,
Python
1
a.sort(key=lambda x: x < 0)
0
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
17.07.2021, 22:53
iSmokeJC, тоже так в начале подумал, но
в начале были положительные числа, а в конце отрицательные
А ноль? Он ни положительный, ни отрицательный...
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
17.07.2021, 22:55
Да, извечный вопрос...
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
18.07.2021, 00:07
Python
1
2
3
4
5
6
7
from random import randrange
 
 
a = [randrange(-10, 11) for _ in range(10)]
print(*a)
b = sorted(a, key=lambda x: (x < 0) + (x <= 0))
print(*b)
2
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
18.07.2021, 05:04
Arsegg,

Не по теме:

хитро

0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,697
Записей в блоге: 14
18.07.2021, 08:27
Лучший ответ Сообщение было отмечено Arsegg как решение

Решение

Дискуссия о нуле, разумеется, важна. Но оставим её пуристам-схоластам. Интереснее другое: в условии сказано "в другой одномерный массив записать числа..." а метод sort этого не делает. Возможно, стоит воспользоваться функцией sorted. (как это уже сделал уважаемый Arsegg). Но что-то мне подсказывает, что для большого исходного списка эффективнее будет... да-да, "старое доброе императивное решение"

Python
1
2
3
4
5
6
7
8
9
10
11
def task(arr):
    p,pn=[],[]
    for a in arr:
        if a>0:
            p.append(a)
        else:
            pn.append(a)
    p.extend(pn)
    return p
    
print(task([1,4,-7,0,12,5,-3]))
2
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
18.07.2021, 08:44
Catstail, только для нулей нужно еще массив создавать)) А так да, быстрее, как минимум в 2 раза (log(n), если асимтотически). Замерял на рандомных массивах на 100к элементов.
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
18.07.2021, 08:46
Catstail, вариация, с одним списком, без слияния )))
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def task(arr):
    p = []
    index = 0
    for a in arr:
        if a > 0:
            p.insert(index, a)
            index += 1
        else:
            p.append(a)
    return p
 
 
print(task([1, 4, -7, 0, 12, 5, -3]))
1
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
18.07.2021, 10:50
iSmokeJC, можно добавить одно подусловие с нулями:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def task(arr):
    p = []
    index = 0
    for a in arr:
        if a > 0:
            p.insert(index, a)
            index += 1
        elif a == 0:
            p.insert(index, a)
        else:
            p.append(a)
    return p
 
 
print(task([1, 4, -7, 0, 12, 5, -3, 0, 0]))
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
19.07.2021, 13:03
Я что то не пойму, зачем для сортировки Вы используете свою функцию лямбда для сравнения?
Для чисел достаточно использовать стандартную функцию упорядочивания, то есть функцию не указывать, а использовать функцию, которая по умолчанию. Что бы положительные были спереди, указать reverse.
Что бы создавался новый список, использовать sorted.
По поводу нуля можно не заморачиваться. При сортировке он окажется между положительными и отрицательными числами.
Кем бы его не считали, такое расположение нуля во всех случаях будет соответствовать условию.
Если он положительный, то его можно будет считать в группе положительных.
Если он отрицательный, то его можно считать в группе отрицательных.
Если он не то и не другое, то расположение нуля между группой положительных и группой отрицательных не будет противоречить условию. Так как в условии говорится только о расположении положительных чисел и расположении отрицательных чисел. При обычной реверсивной сортировке условие будет выполняться.
Так что делаем простую реверсивную сортировку с помощью функции sorted, и больше ничего делать не нужно. Условие будет выполнено. Если я не прав, то поправте.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.07.2021, 13:20
Цитата Сообщение от Viktorrus Посмотреть сообщение
Если я не прав, то поправте
При наших "сортировках" сохраняется порядок появления элементов
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
19.07.2021, 13:53
Цитата Сообщение от iSmokeJC Посмотреть сообщение
При наших "сортировках" сохраняется порядок появления элементов
Где Вы это увидели в условии?
Про сохранении порядка ничего в условии не говорится.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.07.2021, 13:56
Цитата Сообщение от Viktorrus Посмотреть сообщение
Где Вы это увидели в условии?
А я где-то писал, что это было в условии?
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
19.07.2021, 14:00
Цитата Сообщение от iSmokeJC Посмотреть сообщение
А я где-то писал, что это было в условии?
То есть Вы решаете задачу добавляя в условие свои фантазии?
Тогда это не для меня. Я формалист, строго следую ТЗ.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.07.2021, 14:06
Viktorrus, ок. Где в ТЗ указано, что выходные данные должны быть отсортированы?
Т.е. Вы это выдумали?

Добавлено через 3 минуты
Вообще, сортировка - это упорядочивание по какому-либо признаку. Этот признак и обозначен в ТЗ - сначала положительные, затем отрицательные. Т.е. компаратор - больше или меньше нуля. Про различия элементов между собой речи нет.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
19.07.2021, 14:07
Viktorrus,
Цитата Сообщение от xSam Посмотреть сообщение
и в другой одномерный массив записать числа так что бы в начале были положительные числа, а в конце отрицательные
о сортировке ни слова, равно как и об ее устойчивости.
P. S. Решение Ув. Catstail за линию и есть решение данной задачи.
2
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
19.07.2021, 14:15
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Где в ТЗ указано, что выходные данные должны быть отсортированы?
Применение встроенной сортировки повышает производительность кода, так как это встроенная функция, как я предполагаю написанная на Си.
В общем я вижу вы не ищите истину, а пытаетесь любым способом доказать свою правоту.
Извините, я софизмом не занимаюсь.
Не буду Вам мешать, удачи.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.07.2021, 14:28

Не по теме:

Цитата Сообщение от Viktorrus Посмотреть сообщение
Извините, я софизмом не занимаюсь.
Ваш стиль сливаться с дискуссии при нехватке контраргументов и осознании правоты оппонентов, к сожалению общеизвестен.
Как там? А, вот -
За сим дискуссию покидаю, я устал


0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.07.2021, 14:28
Помогаю со студенческими работами здесь

Как сделать так, что-бы массиве были не только положительные числа, но и отрицательные?
Как сделать так, что-бы массиве были не только положительные числа, но и отрицательные? //фрагмент кода в котором числа от нуля...

Переставить числа последовательности таким образом, чтобы в начале этой последовательности оказались все положительные числа, а в конце отрицательные
пусть задана последовательность чисел N1, N2, ..., Nk, состоящая из положительных и отрицательных значений. составить блок схему и...

Отсортировать массив, чтобы все положительные числа находились в начале, отрицательные - в конце
Помогите пожалуйста. Дан вещественный массив A( N ) . Отсортировать его таким образом , чтобы все положительные числа находились в...

Переписать в другой файл числа так, чтобы положительные и отрицательные числа чередовались
Пожалуйста помогите сделать задание. Не знаю, как дописать программу Компоненты файла fileA – целые отличные от нуля числа, причем...

Отсортировать массив таким образом, чтобы все положительные числа находились в начале, а отрицательные в конце
Дан вещественный массив A(N).Отсортировать его таким образом,чтобы все положительные числа находились в начале,а отрицательные в конце...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru