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

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

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

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

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

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

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

37
Эксперт Python
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
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
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
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
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
18.07.2021, 05:04
Arsegg,

Не по теме:

хитро

0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38165 / 21100 / 4307
Регистрация: 12.02.2012
Сообщений: 34,688
Записей в блоге: 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
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
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
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru