• Предмет: Информатика
  • Автор: oksanakostruba
  • Вопрос задан 3 месяца назад

Допоможіть ,ПАЙТОН !!! У списку цілих, заповненому випадковими числами, визначте мінімальний та максимальний елементи, підрахуйте
кількість від’ємних елементів, додатних елементів та кількість
нулів. Результати виведіть на екран.


p15: За 18 балов получаются более осмысленные ответы. Правда? :)

Ответы

Ответ дал: archery
1

Код:

def calcList(l):

   print(f"Мінімальний {min(l)}")

   print(f"Максимальний {max(l)}")

   print(f"Кількість від’ємних {len([x for x in l if x < 0])}")

   print(f"Кількість додатних {len([x for x in l if x > 0])}")

   print(f"Кількість нулів {len([x for x in l if x == 0])}")

calcList([-2,5,-7,0])


Аноним: https://znanija.com/task/53262537
Аноним: помогите пожалуйста
Ответ дал: p15
0

Ответ:

from random import randint

a=[randint(-10,10) for _ in range(20)]

print(a)

pos=sum([i>0 for i in a])

zero=a.count(0)

print(f'max={max(a)}\nmin={min(a)}\npositive={pos}\nzero={zero}\nnegative={len(a)-pos-zero}')

Объяснение:

1) При каждом запуске у нас будут новые случайные числа

2) Вывод этой случайной матрицы

3) Каждый следующий вывод мы считаем разным методом, при этом он самый оптимальный. Сравните

sum([i>0 for i in a]) и len([x for x in a if x>0])

a.count(0) и len([x for x in a if x==0])
Ну и последнее - для отрицательных это разность общего объема минус положительные и нули.
Таким образом мы еще и выучили 3 разных способа формирования этих результатов.
4) min, max - стандарт.

5) вывод - f-строка с переносом строк.


p15: k = 49636, time = 0.024000167846679688
k = 49636, time = 0.02702474594116211
k = 49636, time = 0.02399611473083496
p15: k = 49506, time = 0.02399921417236328
k = 49506, time = 0.038001060485839844
k = 49506, time = 0.03799891471862793
p15: В общем с len не однозначно, но нестабильно :) Вообще len может быть быстрее суммы, что понятно, но само формирование матрицы дольше
p15: запустите большее число раз
p15: k = 49936, time = 0.025020837783813477
k = 49936, time = 0.02598261833190918
k = 49936, time = 0.025997400283813477
p15: Может надо сделать теперь циклов 1000 формирования и среднее арифметическое посчитать.
archery: в большинстве случаев у меня len быстрее. Может оно еще от конфигурации системы зависит
archery: ))) думаю автору вопроса наш спор вообще никуда не уперся)))
в общем можно использовать и тот и другой вариант. Не один из них особо быстрее не работает
archery: делать нам точно нечего
archery: 0: 0.006768225193023681
1: 0.004184025287628174
2: 0.0038939692974090576
Вас заинтересует