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

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

17.07.2021, 15:14. Показов 6404. Ответов 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
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru