Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Python.Какой функцией можно вывести КОЛИЧЕСТВО четных элементов в массиве?

Nikls Fury Ученик (114), закрыт 1 год назад
import random
a=[]
for i in range(10):
a.append(random.randint(5,15))
print(a)
a.insert(1,25)
print(a[1])
for i in a:
if i%2==0:
print(i)
И так в конце надо вывести КОЛИЧЕСТВО чётных чисел,подскажите какая функция есть для этого(Python)
Лучший ответ
Папа Высший разум (130000) 1 год назад
Отфильтруй и посчитай длину, например.
 a = [1, 2, 3, 4, 5, 6, 7]
print(len(list(filter(lambda i: i % 2 == 0, a))))
Выведет 3.
Чуть более короткий вариант:
 print(len([x for x in a if x % 2 == 0])) 

А учитывая, что там ещё и цикл, можно заменить его.
Было:
 for i in a:
if i%2==0:
print(i)
Стало:
 e = [x for x in a if x % 2 == 0]
print(*e, len(e), sep = '\n')
Принт выведет сами чётные числа, по одному на строке, и отдельной строкой - их количество.

И вообще, я бы рекомендовал методом Чака Норриса переписать весь алгоритм:
 import random

a = [random.randint(5, 15) for i in range(10)]
print(*a, '', sep = '\n')

a.insert(1,25)
print(a[1], '\n')

e = [x for x in a if x % 2 == 0]
print(*e, '', len(e), sep = '\n')
Добавил в вывод пустые строки для ясности, где какие числа выводятся.
Nikls FuryУченик (114) 1 год назад
а нету такой же строки,но покороче?
Папа Высший разум (130000) Nikls Fury, вот так малость покороче:
 print(len([x for x in a if x % 2 == 0])) 
Остальные ответы
Программист Просветленный (35512) 1 год назад
руками делай
Nikls FuryУченик (114) 1 год назад
как я сделаю,когда не знаю,немного не логично? Не находите?
Лина Дарк Мудрец (11018) 1 год назад
Вводи еще одну переменную как счетчик
Nikls FuryУченик (114) 1 год назад
а как она называется?
Лина ДаркМудрец (11018) 1 год назад
Это тебе решать
Я вот например k введу.
 k=0
for i in a:
if i%2==0:
k=k+1
print(i)
print(k)
Any Key Мудрец (15196) 1 год назад
 arr = [1,2,3,4,5,6,7]
evens = 0
for i in arr:
if not i%2:
evens += 1
print(evens)
ПапаВысший разум (130000) 1 год назад
Нужно больше циклов. Зачем, например, i % 2? Это слишком просто. Надо пустить цикл по всем битам, и для каждого бита проверить, младший он или нет, и равен ли нулю.
Any Key Мудрец (15196) Папа, нужно больше запутать новичка. Заставить его разбираться с лямбда-функциями, фильтрами, приведением типов и вот это всё, когда он еще не усвоил элементарных вещей. Алсо, нужно гонять процессор впустую ради красивого кода в одну строчку, заставляя дергать лямбду в каждой итерации. Нуачо, скорости проца позволяют. И память резиновая, можно плодить сколько хочешь отфильтрованных списков. Если чо, еще пару планок доставим! Современная разработка она такая...
Андрей Высший разум (438008) 1 год назад
 a = [1, 2, 3, 4, 5, 6, 7]
print(sum([1 - x % 2 for x in a]))
ПапаВысший разум (130000) 1 год назад
Да, это точно покороче. Но у школьника чайник вскипит. :-)
Айран Просветленный (26908) 1 год назад
 import numpy as np 
a = np.random.randint(5, 15, size=10)
print(a)
print((a%2==0).sum())
# [8 3 5 2 8 3 0 7 2 6]
# 6
Похожие вопросы