Найти - Пользователи
Полная версия: Количество вхождений определенной цифры (от 0 до 9) в списке чисел.
Начало » Python для новичков » Количество вхождений определенной цифры (от 0 до 9) в списке чисел.
1
AlLinik
Всем привет!
Есть список a
Получается, количество числа “1” в списке а = 2, а цифр “1” = 6.
Подскажите, как вывести количество цифр 1, входящих в список а?

Вот решение для вывода числа “1”:
 a = [1, 12, 121, 1, 10]
b = 0
for i in a:
    if i == 1:
        b += 1
print(b)

Всем откликнувшимся спасибо!!!
xam1816
 a = [1, 12, 121, 1, 10]
def count_digit(digit, target_digit):
    count = 0
    while digit != 0:
        if digit % 10 == target_digit:
            count += 1
        digit //= 10
    return count
res =sum(count_digit(i, 1) for i in a)
print(res)
ZerG
Бывает что мы вынуждены работать не только с десятичными целыми числами.
В любом случае нужно уметь выходить за рамки.
Никто не заставляет нас работать с числами как с числами
К примеру мы запросто можем перевести 19, 0х11100101, 0х1Е в стоку и обработать их как символы

 a = [1, 12, 121, 1, 10]
cnt = 0
for pos in a:
    # convert int to string
    spos = str(pos)
    if len(spos) > 1:
        for val in spos:
            if val == "1":
                cnt += 1
    else:
        if spos == "1":
            cnt += 1
print(f"Count of 1 symbols is: {cnt}")

Данный метод не является хорошим вариантом, однако он работает и показывает что порой черное
это круглое
В какой то момент может оказаться что обработать большое число по вашей задаче проще как строку нежели
проводить вычисления над 10-ти значными и более числами.



py.user.next
ZerG
Никто не заставляет нас работать с числами как с числами
Числа оптимизированы по памяти. А строки - это наборы чисел.
  
>>> import sys
>>>
>>> sys.getsizeof(1)
28
>>> sys.getsizeof('1')
50
>>> sys.getsizeof(12)
28
>>> sys.getsizeof('12')
51
>>> sys.getsizeof(123)
28
>>> sys.getsizeof('123')
52
>>> sys.getsizeof(12345123451234512345)
36
>>> sys.getsizeof('12345123451234512345')
69
>>>

ZerG
В какой то момент может оказаться что обработать большое число по вашей задаче проще как строку нежели
проводить вычисления над 10-ти значными и более числами.
И операции с числами тоже быстрее, чем операции со строками.
Так что как ни крути, а операции с числами должны проводиться именно как с числами, это во всех языках так.

Если же ты собрался считать цифры в числах, используя преобразование в строки, то это делается вот так
  
>>> a = [1, 12, 121, 1, 10]
>>> ''.join(map(str, a)).count('1')
6
>>>
ZerG
Разумеется работать с числами как числами это правильный вариант.
Но на примере конкретно данной задачи, как я и написал выше, мы можем
отойти от канонов что бы показать возможность не ити всегда напролом.
 ''.join(map(str, a)).count('1')
– ну само собой. Но мы же отвечаем
человеку та что бы он понял суть происходящего на пальцах. Человек понимающий что
тут написанно - не задал бы данный вопрос
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB