Рубрики
Без рубрики

Список списка Python ()

В этом руководстве показано вам все, что вам нужно знать, чтобы помочь вам овладеть важным подсчетом () методом наиболее фундаментального типа контейнера данных в языке программирования Python. https://youtu.be/6oaq6ejwvbve Определение и использование: метод list.count (x) считает количество вхождений элемента x в списке. Вот короткий пример: >>> lst = … Список списка Python () Подробнее »

Автор оригинала: Chris.

В этом руководстве показано вам все, что вам нужно знать, чтобы помочь вам овладеть необходимым count () Способ наиболее фундаментальных контейнеров типа данных в языке программирования Python.

Определение и использование :

list.count (x) Способ подсчитывает количество вхождений элемента х В Список Отказ

Вот краткий пример:

>>> lst = [1, 2, 42, 2, 1, 42, 42]
>>> lst.count(42)
3
>>> lst.count(2)
2

В первой строке примера вы создаете список lst Отказ Затем вы подсчитаете количество раз целых значений 42 и 2 в списке.

Код головоломки – попробуйте сами:

Теперь вы знаете основы. Давайте углубим ваше понимание с коротким кодом головоломки – можешь решить это?

# Create list of strings
customers = ["Alice", "Bob", "Ann", "Alice", "Charles"]

# Count each customer in list and store in dictionary
d = {k:customers.count(k) for k in customers}

# Print everything
print(d)

# What's the output of this code puzzle?

Вы также можете решить эту головоломку и отслеживать свои навыки Python на нашем интерактивном приложении Finxter.

Синтаксис : Вы можете вызвать этот метод на каждом объекте списка в Python ( Python Versions 2.x и 3.x ). Вот синтаксис:

list.Count (значение)

Аргументы:

стоимость Подсчитывает количество вхождений стоимости в списке. В списке появляется значение, если оператор == возвращает true.

Возвращаемое значение: Метод list.Count (значение) Возвращает целочисленное значение, установленное в число раз аргумент ценность появляется в списке. Если значение не отображается в списке, возвращаемое значение равно 0.

Связанная статья:

  • Python Regex SuperPower – Ultimate Guide
  • Master Python Lists (бесплатный HTML EBook + видео)

Вот ваш бесплатный PDF чит-лист, показывающий вас все методы списка Python на одной простой странице. Нажмите на изображение, чтобы загрузить файл PDF с высоким разрешением, распечатать его и опубликовать его в свою офисную стену:

Список списка Python

Вы уже видели, как подсчитать значения в данном списке. Вот минимальный пример, чтобы подсчитать, как часто значение отображается в списке элементов:

>>> [42, 42, 1, 2, 3, 42, 1, 3].count(42)
3

Значение 42 появляется три раза в списке.

Важно, чтобы вы понимаете, как работает метод подсчета. Скажи, ты ищешь ценность в данном списке. Если список элементов х счетчик увеличивается на один. Способ не считается количество раз, когда элемент ссылается в память!

Вот пример:

>>> lst = [[1,1], [1,1], (1,1), 42, 1]
>>> lst.count([1,1])
2

Список верхнего уровня относится к двум независимым объектам списка [1, 1] в памяти. Тем не менее, если вы подсчитаете количество вхождений третьего списка [1, 1] , метод правильно определяет, что оно выглядит два раза. Это потому, что два элемента списка равны списку [1, 1] Отказ

Обратите внимание, что значения х и y считаются равными, если x == y Отказ Вы можете увидеть это для целочисленных списков в следующем примере:

>>> lst_1 = [1, 1]
>>> lst_2 = [1, 1]
>>> lst_1 == lst_2
True

Подводя итоги, list.Count (значение) Способ подсчитывает количество раз, когда элемент списка равен значения (с помощью сравнения == ). Вот эталонная реализация:

def count(lst, value):
    ''' Returns the number of times
    a list element is equal to value'''

    count = 0
    for element in lst:
        count += element == value

    return count


lst = [1, 1, 1, 1, 2]

print(lst.count(1))
# 4

print(lst.count(2))
# 1

print(lst.count(3))
# 0

(Обратите внимание, что это не реальный Cpython. реализация. Это просто семантически эквивалентная реализация list.Count (значение) Метод для образовательных целей.)

Статьи по Теме:

  • Методы списка Python – простой обзор
  • Как начать изучать Python?

Сложность списка Python

Сложность времени из Счет (значение) Метод o (n) для списка с n элементов. Стандартная реализация Python Cpython «касается всех элементов в исходном списке, чтобы проверить, равны ли они значением.

Опять же, посмотрите на справочную реализацию, где вы можете увидеть эти операции сравнения элемент В коде:

def count(lst, value):
    count = 0
    for element in lst:
        count += element == value
    return count

Таким образом, момент сложности является линейным в количестве элементов списка.

Вы можете увидеть участок времени сложности count () Метод растущего размера списка здесь:

На рисунке показано, как прошедшее время подсчета фиктивного элемента -99 в списках с растущим числом элементов растет линейным на количество элементов.

Если вы заинтересованы в коде, я использовал для генерации этого участка MATPLOTLIB, это он:

import matplotlib.pyplot as plt
import time

y = []
for i in [100000 * j for j in range(10,100)]:
    lst = list(range(i))
    t0 = time.time()
    x = lst.count(-99)
    t1 = time.time()
    y.append(t1-t0)


plt.plot(y)
plt.xlabel("List elements (10**5)")
plt.ylabel("Time (sec)")
plt.show()

Список Python Count Дубликаты

Как вы можете рассчитывать на количество дубликатов в данном списке?

Проблема : Давайте рассмотрим элемент дубликата, если оно появляется как минимум два раза в списке. Например, список [1, 1, 1, 2, 2, 3] имеет два дубликата 1 и 2 Отказ

Решение : Вы создаете Пустой набор дубликаты. Затем вы хотите по поводу исходного списка и добавить каждый элемент на набор, который имеет значение счета по меньшей мере 2.

Вот код:

def find_dups(lst):
    dups = set()
    for el in lst:
        if lst.count(el)>1:
            dups.add(el)
    return dups

print(find_dups([1, 1, 1, 2, 2, 3]))
# {1, 2}

print(find_dups(["Alice", "Bob", "Alice"]))
# {'Alice'}

print(find_dups([1, 2, 3]))
# set()

Обратите внимание, что этот алгоритм имеет квадратичную сложность времени, потому что для каждого элемента в списке необходимо подсчитать количество раз, когда он появляется в списке – каждая из этих операций счета имеет линейную сложность времени.

Связанная статья:

  • Введение в комплекты в Python (примеры Гарри Поттера) 😉

Список Python считает уникальные значения и строки

Как вы можете посчитать Количество уникальных значений (или строки) в данном списке?

Проблема : Значение считается уникальным, если оно появляется только один раз в списке.

Решение : Вы считаете каждый элемент В списке и взять только те, с помощью list.count (элемент) Отказ

Вот код:

def find_uniques(lst):
    uniques = set()
    for el in lst:
        if lst.count(el) == 1:
            uniques.add(el)
    return uniques


print(find_uniques([1, 1, 2, 3, 3]))
# {2}

print(find_uniques(["Alice", "Bob", "Alice"]))
# {'Bob'}

Этот алгоритм имеет квадратичную сложность времени, потому что для каждого элемента в списке необходимо подсчитать количество раз, когда он появляется в списке – каждая из этих операций счета имеет линейную временную сложность.

Список Python подсчитывает все элементы (количество для Dict)

Как вы можете посчитать все элементы в списке и хранить результат в словаре?

Проблема : Preen это список. Вы хотите сосчитать каждый элемент в списке. Затем вы хотите сохранить результат в словаре, отображающий элементы на их частоты внешнего вида (счетчиков). Например, список [1, 1, 2, 2, 3] должен привести к словарю {1: 2, 2: 2, 3: 1} Отказ

Решение : Вы решаете эту проблему, используя Словарь понимание Отказ Ключ – это элемент списка, а значение является частотой этого элемента в списке. Вы используете count () Способ сделать это.

Вот код:

def count_to_dict(lst):
    return {k:lst.count(k) for k in lst}


print(count_to_dict(["Alice", "Bob", "Ann", "Alice", "Charles"]))
# {'Alice': 2, 'Bob': 1, 'Ann': 1, 'Charles': 1}

print(count_to_dict([1, 1, 1, 2, 2, 3]))
# {1: 3, 2: 2, 3: 1}

Этот алгоритм имеет квадратичную сложность времени, потому что для каждого элемента в списке необходимо подсчитать количество раз, когда он появляется в списке – каждая из этих операций счета имеет линейную временную сложность.

Связанная статья:

  • Ultimate Guide к словари в Python

Список Python Count с условием

Как вы можете подсчитать элементы при определенном состоянии в Python? Например, что, если вы хотите посчитать все четные значения в списке? Или все простые номера? Или все строки, которые начинаются с определенного персонажа? Есть несколько способов выполнить это, давайте обсудим их один за другим.

Скажем, у вас есть условие для каждого элемента х Отказ Давайте сделаем это функцией с именем Состояние (x) Отказ Вы можете определить любое условие, которое вы хотите, просто положите его в свою функцию. Например, это условие возвращает true для всех элементов, которые больше, чем целое число 10:

def condition(x):
    return x > 10


print(condition(10))
# False

print(condition(2))
# False

print(condition(11))
# True

Но вы также можете определить более сложные условия, такие как проверка, если они являются простыми числами.

Список Python считай, если

Как вы можете посчитать элементы списка, если условие будет выполнено?

Ответ должен использовать простой выражение генератора сумма (условие (x) для x в lst) :

>>> def condition(x):
	return x>10

>>> lst = [10, 11, 42, 1, 2, 3]
>>> sum(condition(x) for x in lst)
2

Результат указывает на то, что есть два элемента, которые больше 10. Вы использовали выражение генератора, которое возвращает итератор логии. Обратите внимание, что логический Правда представлено целочисленным значением 1 и логией Ложь Представляется целочисленным значением 0. Вот почему вы можете просто рассчитать сумму по всем лоянам, чтобы получить количество элементов, для которых удерживается состояние.

Список Python считается больше/меньше

Если вы хотите определить количество элементов, которые больше или меньше, чем указанное значение, просто измените условие в этом примере:

>>> def condition(x):
	return x>10

>>> lst = [10, 11, 42, 1, 2, 3]
>>> sum(condition(x) for x in lst)
2

Например, чтобы найти количество элементов, меньше 5, используйте условие X <5 в выражении генератора:

>>> lst = [10, 11, 42, 1, 2, 3]
>>> sum(x<5 for x in lst)
3

Список Python Count Zero/ненулевой

Чтобы подсчитать количество нулей в данном списке, используйте list.Count (0) Способ вызова.

Чтобы подсчитать количество нешен в данном списке, вы должны использовать Условный подсчет Как обсуждалось ранее:

def condition(x):
    return x!=0

lst = [10, 11, 42, 1, 2, 0, 0, 0]
print(sum(condition(x) for x in lst))
# 5

Список Python Count Lambda + карта

Альтернативой состоит в том, чтобы использовать комбинацию карты и функции лямбда.

Статьи по Теме:

  • [Полное руководство] Функция карты : Манипулирует каждый элемент в итерателе.
  • [Полное учебное пособие] Функция лямбда Создает анонимную функцию.

Вот код:

>>> sum(map(lambda x: x%2==0, [1, 2, 3, 4, 5]))
2

Вы считаете количество даже целых чисел в списке.

  • Функция лямбда возвращает значение правды для данного элемента х Отказ
  • Функция карты преобразует каждый элемент списка в логическое значение (1 или 0).
  • Функция суммы суммирует «1».

Результатом является количество элементов, для которых условие оценивается на Правда Отказ

Список Python Count Regex/Count Matchs

Учитывая список строк. Как вы можете проверить, сколько элементов списка совпадает с определенным рисунком Regex? (Если вам нужен переподготовка к регулярным выражениям Python, посмотрите, как My Ultimate Guide по этому BLO G – это действительно Ultimate!)

  • Список lst струнных элементов
  • Шаблон P быть сопоставленным против струн в списке.

Решение : Используйте концепцию выражений генератора с помощью Ternary Operator.

Статьи по Теме:

  • Мастер Тернарный оператор.
  • Уменьшение рассмотрения главного списка.

Вот код:

>>> import re
>>> p = 'a...e'
>>> lst = ['annie', 'alice', 'apex']
>>> sum(1 if re.match(p, x) else 0 for x in lst)
2

Список Python считать подстановочный знак

Вы хотите считать все строковые вхождения данного префикса (например, префикс «SUS» для струн «Сьюзи» , «SUSY» , «SUSI» )?

Решение : Опять же, вы можете использовать концепцию выражений генератора с помощью Ternary Operator.

Статьи по Теме:

  • Мастер Тернарный оператор.
  • Уменьшение рассмотрения главного списка.

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

>>> import re
>>> lst = ['Susi', 'Ann', 'Susanne', 'Susy']
>>> pattern = 'Sus.*'
>>> frequency = sum(1 if re.match(pattern, x) else 0 for x in lst)
>>> print(frequency)
3

Выражение генератора дает кучу 1s и 0s – первое, если элемент списка начинается с префикса «Sus» И последнее, если это не так. Суммируя всеми элементами, вы получаете количество совпадений оператора подстановки.

Список Python Count не работает

list.Count (значение) Метод очень трудно сломаться. Посмотри, что я пытался получить ошибку:

>>> lst = [1, 1, 1, 2, 2, 3]
>>> lst.count(1)
3
>>> lst.count(2, 2)
Traceback (most recent call last):
  File "", line 1, in 
    lst.count(2, 2)
TypeError: count() takes exactly one argument (2 given)
>>> lst.count(4)
0
>>> lst.count("1")
0
>>> count(lst)
Traceback (most recent call last):
  File "", line 1, in 
    count(lst)
NameError: name 'count' is not defined
>>> 

Вы должны попробовать очень трудно сломать его. Просто рассмотрите эти советы:

  • list.Count (значение) Метод принимает ровно один аргумент: значение, которое вы хотите рассчитывать. Если вы определите более или менее аргументы, произойдет ошибка.
  • list.Count (значение) Метод – это просто: метод объекта списка. Вы должны вызвать его в объекте списка. Если вы попытаетесь вызвать его на другом объекте, это, вероятно, будет не удастся. Если вы попытаетесь использовать его так же, как это (без префикса списка, I.E., Count (значение) ), он также не удастся.
  • list.Count (значение) вернутся 0, если вы поместите в любой объект как аргумент, который не оценивает Правда по сравнению с элементами списка, используя == Оператор сравнения. Поэтому убедитесь, что объект, который вы хотите рассчитывать, действительно оценивает Правда Если вы сравните его против некоторых элементов списка. Вы можете предположить это, но это могло легко не сделать это.

Список ссылок Python

Сборщик мусора Python Отслеживает количество раз, когда каждый объект в памяти ссылается. Вы называете это «ссылочный счетчик». Все объекты, которые имеют ссылочный счетчик нуля, не могут быть достигнуты вашим кодом и, таким образом, могут быть безопасно удалены сборщиком мусора.

Это не связано с списками Python с одним исключением: каждый элемент списка увеличивает ссылочный счетчик на один, потому что список действительно является массивом указателей на объекты списка в памяти в реализации CPYPHON.

Счет ли списка Python

Как вы можете подсчитать количество раз, когда данный кортеж появляется в списке?

Просто используйте кортеж в качестве значения аргумента ввода для list.Count (значение) метод. Вот пример:

>>> lst = [(1, 2), (1, 1), 99, "Alice", True, (1, 1)]
>>> lst.count((1, 1))
2

Как вы можете посчитать количество кортежей в данном списке?

Используйте Тип (х) Метод проверки типа заданной переменной х Отказ Затем сравните результат с желаемым типом данных (например, кортеж ).

Вот пример:

>>> sum(type(x)==tuple for x in lst)
3

Статьи по Теме:

  • Мастер Тернарный оператор.
  • Уменьшение рассмотрения главного списка.

Список списка Python и сортировка

Дано : список lst Отказ

Проблема : Вы хотите сосчитать количество вхождений всех значений в списке и сортировать их по их частоте.

Пример : Для элементов списка [1, 1, 1, 1, 0, 0, 3, 1, 1, 3, 3, 3] вы хотите получить их частоты сортируемыми способом:

6 times --> element 1
4 times --> element 3
2 times --> element 0

Решение : Используйте Collections.counter (lst) .ment_common () Метод, который делает именно это. Вы можете найти документацию здесь Отказ

import collections

lst = [3, 2, 1, 1, 1, 2, 2, 3]
print(collections.Counter(lst).most_common())

Генерирует вывод:

[(2, 3), (1, 3), (3, 2)]

Список Python рассчитывает медленно

Хотите улучшить производительность list.Count (значение) метод? Это не легко, потому что сложность выполнения – это o (n) с n элементами списка.

Там не так много, вы можете сделать с этим. Конечно, если вам нужно считать тот же элемент несколько раз, вы можете использовать словарь кэша для хранения его результата. Но это работает только в том случае, если список не изменился.

Вы также можете сортировать список один раз, когда принимает o (n log n) для элементов n списка. После этого вы можете позвонить в реализацию методом подсчета на основе двоичного поиска с сложностью времени выполнения O (log n). Но если вам нужно сосчитать только один элемент, это не эффективен.

Интересно, считая Все Элементы в списке также есть сложность o (n) временной среды выполнения. Почему? Потому что вы перейдете на каждый элемент и добавьте его в словарь, если он уже не существует (сопоставление элемента к его счетчику счетчика, изначально 1). Если он существует, вы просто увеличиваете счетчик на один.

В это Отличный ориентир, вы можете найти производительность различных методов подсчета. Счетчик Класс, кажется, имеет лучшие результаты.

Список Python Count VS Len

Какая разница?

  • То list.count (x) Способ подсчитывает количество вхождений элемента x в список .
  • То Лен (список) Метод возвращает общее количество элементов в списке.

Вот минимальный пример:

>>> lst = [1, 2, 2, 2, 2]
>>> lst.count(2)
4
>>> len(lst)
5

Список Python Count () Безопасность потоков

У вас есть несколько потоков, которые одновременно получают доступ к вашему списку? Тогда вы должны быть уверены, что перечисленные операции (такие как count () ) на самом деле резьба безопасна Отказ

Другими словами: вы можете позвонить в Считать () Операция в двух потоках в том же списке одновременно? (И вы можете быть уверены, что результат является значимым?)

Ответ да (если вы используете Mokef Cpython внедрение). Причина – Питона Блокировка глобального интерпретатора Это гарантирует, что в настоящее время поток работает над своим кодом, сначала завершит текущую базовую операцию Python, как определено реализацией Cpython. Только если оно завершится с помощью этой операции, сможет получить следующий поток для доступа к вычислительному ресурсу. Это обеспечивается сложной схемой блокировки в результате реализации CPYPHON.

Единственное, что вам нужно знать, состоит в том, что каждая основная операция в реализации CPYPHON является атомный Отказ Он выполнен полностью и сразу, прежде чем любой другой поток имеет возможность запустить на одном виртуальном двигателе. Поэтому нет условий расы. Примером такого состояния гонки будет следующим: Первый поток считывает значение из списка, второй поток перезаписывает значение, и первая тема перезаписывает значение снова недействительным в операции второго потока.

Все операции Cpython являются потоковыми безопасными. Но если вы объединяете эти операции на функции более высокого уровня, это не в целом без резьбы, поскольку они состоят из многих (возможно, чередующихся) операций.

Куда пойти отсюда?

То list.count (x) Метод подсчитывает количество раз элемента x появляется в список .

Вы узнали INS и ауты этого важного способа списка Python.

Если вы продолжаете бороться с теми основными командами Python, и вы чувствуете застрявшие в своем прогрессе обучения, у меня есть что-то для вас: Python One-listers (Amazon Link).

В книге я дам вам тщательный обзор темы критических компьютерных наук, таких как машинное обучение, регулярное выражение, наука о данных, Numpy и Python Basics – все в одной линейке кода Python!

Получите книгу от Amazon!

Официальная книга Описание: Python One-Listers покажет читателям, как выполнить полезные задачи с одной строкой кода Python. Следуя краткому переподготовку Python, книга охватывает важные продвинутые темы, такие как нарезка, понимание списка, вещание, функции лямбда, алгоритмы, регулярные выражения, нейронные сети, логистические регрессии и др .. Каждая из 50 секций книг вводит проблему для решения, проходит читателя через навыки, необходимые для решения этой проблемы, затем предоставляет краткое однонаправленное решение Python с подробным объяснением.

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.