Как получить количество элементов в списке в Python?
Как получить количество элементов в списке?
6 ответов
как получить размер списка?
чтобы найти размер списка, используйте встроенную функцию, len :
объяснение
все в Python является объектом, включая списки. Все объекты имеют какой-то заголовок в реализации C.
С docs
len(s)
возвращает длину (в количество элементов) объекта. Аргументом может быть последовательность (например, строка, байты, кортеж, список или диапазон) или коллекция (например, словарь, набор или замороженный набор).
object.__len__(self)
и мы также можем видеть, что __len__ метод списков:
встроенные типы вы можете получить len (длина)
и в самом деле мы видим, что мы можем получить эту информацию для всех описанных типов:
не используйте len для проверки пустого или непустого списка
чтобы проверить на определенную длину, конечно, просто проверить на равенство:
но есть специальный случай для тестирования списка нулевой длины или обратного. В этом случае не проверяйте на равенство.
кроме того, не делать:
вместо этого, просто сделать:
я объяснить, почему здесь короче говоря, if items или if not items является более читаемым и более эффективным.
хотя это может быть не полезно из-за того, что это имело бы гораздо больше смысла, как «из коробки» функциональность, довольно простой хак будет строить класс с length свойства:
вы можете использовать его вот так:
по сути, он точно идентичен объекту списка, с дополнительным преимуществом наличия ООП-дружественного length собственность.
как всегда, ваш пробег может варьироваться.
кроме того len вы также можете использовать operator.length_hint (требуется python 3.4+). Для нормальных list оба равнозначны, но length_hint позволяет получить длину списка-итератора, которая может быть полезна при определенных обстоятельствах:
но length_hint по определению только «подсказка», поэтому большую часть времени len лучше.
отвечая на ваш вопрос в качестве примеров, также приведенных ранее:
и для полноты (принимая один для команды с downvotes), это возможно без использования len() функция (я бы не одобрил это как хороший вариант):
(двоеточие в list[:] неявно, поэтому также необязательно)
Работа со списками (list) в Python
С оздание списка в Python может понадобиться для хранения в них коллекции объектов. Списки могут хранить объекты всех типов в одном, в отличие от массива в другом языке программирования. Также размер списка доступен к изменению.
Что такое список
Список (list) – тип данных, предназначенный для хранения набора или последовательности разных элементов.
Его можно сравнить со списком покупок для магазина: точно так же вносятся элементы, их тоже можно добавлять и корректировать.
Как списки хранятся в памяти?
Базовая C-структура списков в Python (CPython) выглядит следующим образом:
Когда мы создаём список, в памяти под него резервируется объект, состоящий из 3-х частей:
Объект списка хранит указатели на объекты, а не на сами объекты
Python размещает элементы списка в памяти, затем размещает указатели на эти элементы. Таким образом, список в Python – это массив указателей.
Базовая работа со списками
Объявление списка
Объявление списка – самый первый и главный этап его создания. Для объявления списка в Python существует несколько способов.
Вариант №1 : Через литерал (выражение, создающее объект):
>>> elements = [1, 3, 5, 6] >>> type(elements) >>> print(elements) [1, 3, 5, 6]
Вариант №2 : Через функцию list() :
>>> elements = list() >>> type(elements) >>> print(elements) []
В этом примере создается пустой список.
Обращение к элементу списка в Python
Некоторые операции, рассмотренные выше, имеют два варианта выбора элемента: либо выбор непосредственно его по имени, либо обращение по индексу. Индексом называют его порядковый номер, начиная с нуля.
Существует также отрицательный индекс, рассмотрим на примере:
elements = [1, 2, 3, ‘word’]
Нумерация элементов списка в Python начиная с нуля
>>> elements[-4] 1 >>> elements[-1] ‘word’
Добавление в список
В списках доступно добавление, изменение, удаление элементов. Рассмотрим каждый способ изменения элементов на примерах.
>>> elements = [1, 2, 3, ‘word’] >>> elements.append(‘meow’) >>> print(elements) [1, 2, 3, ‘word’, ‘meow’]
Для простого примера, рассмотрим создание списка с нуля с помощью метода append() :
>>> elements = [] >>> elements.append(1) >>> elements.append(‘word’) >>> elements.append(‘meow’) >>> print(elements) [1, ‘word’, ‘meow’]
Добавление в список на указанную позицию
>>> elements = [1, 2, 4] >>> print(elements) [1, 2, 4] >>> elements.insert(2, 3) >>> print(elements) [1, 2, 3, 4]
Изменение элементов списка
Изменение элементов списка происходит следующим образом: нужно выбрать элемент по индексу (порядковому номеру элемента) и присвоить новое значение.
>>> elements = [2, 4, 6] >>> elements[2] = 8 >>> print(elements) [2, 4, 8]
В примере выше мы заменили 6 на 8.
Не забывайте, что счёт начинается с нуля, и в данном списке цифра 6 это 2-й элемент
Удаление элемента из списка
>>> elements = [1, «test», 5, 7] >>> del elements[1] >>> print(elements) [1, 5, 7]
Удалять можно как из текущего списка, так и из вложенных списков:
>>> my_list = [«hello», «world», «!»] >>> elements = [1, my_list, «ok»] >>> del elements[1][2] >>> print(elements) [1, [‘hello’, ‘world’], ‘ok’]
Можно удалять целыми диапазонами:
>>> elements = [2, 4, 6, 8, 12] >>> del elements[2:] # удаляем все элементы после 2-го элемента (включительно) >>> print(elements) [2, 4] >>> elements = [2, 4, 6, 8, 12] >>> del elements[:3] # удаляем все элементы до 3-го элемента >>> print(elements) [8, 12] >>> elements = [2, 4, 6, 8, 12] >>> del elements[1:3] # удаляем от 1-го элемента включительно до 3-го элемента >>> print(elements) [2, 8, 12]
>>> elements = [2, «test», 4] >>> elements.remove(«test») >>> print(elements) [2, 4]
Как проверить наличие элемента в списке
>>> elements = [‘слон’, ‘кот’, ‘лошадь’, ‘змея’, ‘рыба’] >>> if ‘кот’ in elements: print(‘meow’) meow
Объединение списков
>>> a = [1, 3, 5] >>> b = [1, 2, 4, 6] >>> print(a + b) [1, 3, 5, 1, 2, 4, 6] >>> hello = [«h», «e», «l», «l», «o»] >>> world = [«w», «o», «r», «l», «d»] >>> hello.extend(world) # extends не возвращает новый список, а дополняет текущий >>> print(hello) [‘h’, ‘e’, ‘l’, ‘l’, ‘o’, ‘w’, ‘o’, ‘r’, ‘l’, ‘d’]
Копирование списка Python
>>> a = [1, 2, 3] >>> b = a # переменно b присваивается не значение списка a, а его адрес >>> print(id(a), id(b)) 56466376 56466376 # a и b ссылаются на один и тот же список >>> b.append(4) >>> print(a, b) [1, 2, 3, 4] [1, 2, 3, 4]
Для копирования списков можно использовать несколько вариантов:
Рассмотрим на примере каждый из этих способов:
>>> a = [«кот», «слон», «змея»] >>> b = a.copy() >>> print(id(a), id(b), a, b) 56467336 56467016 [‘кот’, ‘слон’, ‘змея’] [‘кот’, ‘слон’, ‘змея’] >>> d = list(a) >>> print(id(a), id(d), a, d) 56467336 60493768 [‘кот’, ‘слон’, ‘змея’] [‘кот’, ‘слон’, ‘змея’] >>> import copy >>> e = copy.copy(a) # >>> print(id(a), id(e), a, e) 56467336 60491304 [‘кот’, ‘слон’, ‘змея’] [‘кот’, ‘слон’, ‘змея’] >>> f = copy.deepcopy(a) >>> print(id(a), id(f), a, f) 56467336 56467400 [‘кот’, ‘слон’, ‘змея’] [‘кот’, ‘слон’, ‘змея’] >>> c = a[:] # устаревший синтаксис >>> print(id(a), id(c), a, c) 56467336 60458408 [‘кот’, ‘слон’, ‘змея’] [‘кот’, ‘слон’, ‘змея’]
Важно : copy.copy(a) делает поверхностное копирование. Объекты внутри списка будут скопированы как ссылки на них (как в случае с оператором = ). Если необходимо рекурсивно копировать всех элементов в списке, используйте copy.deepcopy(a)
Скопировать часть списка можно с помощью срезов. Есть несколько вариантов использования:
>>> a = [«кот», «слон», «змея»] >>> b = a[2:] # с 2-го элемента (включительно) до конца списка >>> print(b) [‘змея’] >>> c = a[:2] # с начала списка по 2-й элемент >>> print(c) [‘кот’, ‘слон’] >>> d = a[1:2] # с 1-го элемента (включительно) по 2-й элемент >>> print(d) [‘слон’] >>> a = [1, 2, 3, 4, 5, 6, 7, 8] >>> e = a[0:8:2] # c 0-го элемента по 8-й элемент с шагом 2 >>> print(e) [1, 3, 5, 7]
Цикл по списку
elements = [1, 2, 3, «meow»] for el in elements: print(el)
elements = [1, 2, 3, «meow»] elements_len = len(elements) i = 0 while i
Методы списков
Пример использования методов:
# append >>> a = [1, 2, 3] >>> a.append(4) print(a) [1, 2, 3, 4] # extend >>> elements = [1, 2, 3, «meow»] >>> elements.extend([4, 5, «gaf»]) >>> print(elements) [1, 2, 3, ‘meow’, 4, 5, ‘gaf’] # insert >>> a = [1, 3, 4] >>> a.insert(1, 2) >>> print(a) [1, 2, 3, 4] # remove >>> elements = [1, «meow», 3, «meow»] >>> elements.remove(«meow») >>> print(elements) [1, 3, ‘meow’] # remove удаляет только первое вхождение # clear >>> a = [1, 2, 3] >>> a.clear() >>> print(a) [] # copy >>> a = [1, 2, 3] >>> b = a.copy() >>> print(id(a), id(b), a, b) 60458408 60491880 [1, 2, 3] [1, 2, 3] # count >>> elements = [«one», «two», «three», «one», «two», «one»] >>> print(elements.count(«one»)) 3 # index >>> elements = [«one», «two», «three», «one», «two», «one»] >>> print(elements.index(«three»)) 2 # pop >>> elements = [1, «meow», 3, «meow»] >>> elements.pop(1) # удаляем элемент с индексом 1 ‘meow’ # pop возвращает удаленный элемент списка >>> print(elements) [1, 3, ‘meow’] >>> elements.pop() # удаляем первый элемент списка ‘meow’ >>> print(elements) [1, 3] >>> elements.pop(-1) # удаляем последний элемент списка 3 >>> print(elements) [1] # reverse >>> a = [1, 2, 3] >>> a.reverse() >>> print(a) [3, 2, 1] # sort (по возрастанию) >>> elements = [3, 19, 0, 3, 102, 3, 1] >>> elements.sort() >>> print(elements) [0, 1, 3, 3, 3, 19, 102] # sort (по убыванию) >>> elements = [3, 19, 0, 3, 102, 3, 1] >>> elements.sort(reverse = True) >>> print(elements) [102, 19, 3, 3, 3, 1, 0]
Вложенные списки
Список может содержать объекты разных типов: числовые, буквенные, а также списки. Список списков выглядит следующим образом:
>>> elements = [1, 2, [0.1, 0.2, 0.3]]
Для обращения к элементу вложенного списка нужно использовать два индекса: первый указывает на индекс главного списка, второй — индекс элемента во вложенном списке. Вот пример:
>>> elements = [[«яблоки», 50], [«апельсины», 190], [«груши», 100]] >>> print(elements[0]) [‘яблоки’, 50] >>> print(elements[1][0]) апельсины
Срезы
Срезы (slices) – это подмножества элементов списка. Срезу нужны, когда необходимо извлечь часть списка из полного списка.
У них есть свой собственный синтаксис. Записывается срез так же, как обращение к элементу, используя индекс. Пример:
В этом случае берётся срез от номера start (включительно) до stop (не включая его), а step – это шаг. По умолчанию start и stop равны 0, step равен 1.
Генераторы списков
>>> c = [c * 3 for c in ‘list’] >>> print(c) [‘lll’, ‘iii’, ‘sss’, ‘ttt’]
Таким образом мы получили отдельно взятые утроенные буквы слова, введённого в кавычки. Есть множество вариантов применения генератора списков.
Пример генератора списка:
>>> nums = [i for i in range(1, 15)] >>> print(nums) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
Best Practices
Последние абзацы статьи будут посвящены лучшим решениям практических задач, с которыми так или иначе сталкивается Python-разработчик.
Как получить список в обратном порядке
Изменить порядок размещения элементов в списке помогает функция list.reverse() :
>>> elements = [1, 2, 3, 4, 5, 6] >>> elements.reverse() >>> print(elements) [6, 5, 4, 3, 2, 1]
Как перевести список в другой формат?
Иногда требуется перевести список в строку, в словарь или в JSON. Для этого нужно будет вывести список без скобок.
Перевод списка в строку осуществляется с помощью функции join(). На примере это выглядит так:
>>> fruits = [«яблоко», «груша», «ананас»] >>> print(‘, ‘.join(fruits)) яблоко, груша, ананас
В данном случае в качестве разделителя используется запятая.
>>> elements = [[‘1’, ‘a’],[‘2’, ‘b’],[‘3’, ‘c’]] >>> my_dict = dict(elements) >>> print(my_dict)
JSON – это JavaScript Object Notation. В Python находится встроенный модуль json для кодирования и декодирования данных JSON. С применением метода json.dumps(x) можно запросто преобразовать список в строку JSON.
>>> import json >>> json.dumps([‘word’, ‘eye’, ‘ear’]) ‘[«word», «eye», «ear»]’
Как узнать индекс элемента в списке?
>>> elements = [1, 3, 6, 9, 55] >>> print(elements.index(9)) 3
В качестве аргумента передаем значение, а на выходе получаем его индекс.
Как посчитать количество уникальных элементов в списке?
Самый простой способ – приведение списка к set (множеству). После этого останутся только уникальные элементы, которые мы посчитаем функцией len() :
>>> words = [«one», «two», «one», «three», «one»] >>> len(set(words)) 3
Как проверить список на пустоту?
Как создать список числовых элементов с шагом
Создание списка числовых элементов с шагом может понадобиться не так и часто, но мы рассмотрим пример построения такого списка.
Шагом называется переход от одного элемента к другому. Если шаг отрицательный, произойдёт реверс массива, то есть отсчёт пойдёт справа налево. Вот так выглядит список с шагом.
>>> elements = [1, 2, 3, 4, 5, 8, 9, 10, 11, 14, 20] >>> print(elements[0:11:2]) [1, 3, 5, 9, 11, 20]
Еще один вариант – воспользоваться генератором списков:
>>> elements = [c for c in range(0, 10, 2)] # от 0 (включительно) до 10 с шагом 2 >>> print(elements) [0, 2, 4, 6, 8]
При разработке на языке Python, списки встречаются довольно часто. Знание основ работы со списками поможет быстро и качественно писать программный код 😉.
Python: получить количество элементов в списке
Есть разные способы узнать количество элементов в списке. Подходы различаются, хотите ли вы считать вложенные списки как один элемент или все элементы во вложенных списках, или если вас интересуют только уникальные элементы и т.д.
Встроенная функция len()
Давайте посмотрим на следующий пример:
Как следует из названия, функция len() возвращает длину списка независимо от типов элементов в нем.
Использование цикла for
Цикл заканчивается, когда он перебирает все элементы, поэтому счетчик будет представлять общее количество элементов в списке:
Запуск этого кода напечатает:
Получить количество уникальных элементов в списке
Мы видим, что в list_d 8 элементов, 5 из которых уникальны.
Список списков с использованием len()
Во введении мы увидели, что элементы списков могут иметь разные типы данных. Однако списки, в свою очередь, могут иметь списки в качестве своих элементов. Например:
Обратите внимание, что пустой список считается одним элементом. Если список в списке содержит более одного элемента, они не принимаются во внимание. Вот здесь for и пригодится.
Получить количество элементов в списке, содержащем другие списки
Для получения длины воспользуемся встроенной функцией len() :
В этом примере следует отметить несколько важных моментов. Во-первых, на этот раз пустой список не повлиял на общий счет. Это связано с тем, что в каждом цикле мы учитываем длину текущего вложенного списка и, поскольку длина пустого списка равна 0, count увеличивается на 0.
Однако вы можете видеть, что каждый символ строки «char» учитывается в общем количестве элементов. Это связано с тем, что функция len() воздействует на строку, возвращая все ее символы. Мы можем избежать этой ситуации, используя тот же подход, что и в разделе ниже, который также позволит нам иметь элементы, отличные от списков.
Вложенные списки
Опять же, мы инициализируем переменную count равной 0. Если мы хотим получить общее количество элементов во вложенном списке, нам сначала нужно проверить, является ли элемент списком или нет. Если это так, мы выполняем цикл внутри списка и рекурсивно вызываем функцию до тех пор, пока не останутся вложенные списки. Все элементы, кроме списков (целые числа, строки и т.д.), увеличивают счетчик на 1.
Обратите внимание, что это также решение проблем, вызванных предыдущим подходом.
Давайте посмотрим на код для подсчета элементов во вложенных списках:
Запуск этого кода даст нам:
Вывод
Мы увидели, что в зависимости от типа списка, который у нас есть, есть разные способы получить количество элементов. len() это определенно самая быстрая и простая функция, если у нас есть плоские списки.
Количество элементов в списке Python с условиями или критериями
В этом посте мы рассмотрим, как узнать число элементов в списке Python, удовлетворяющих определенным условиям или критериям.
Существует несколько способов такого подсчета, и мы изучим каждый из них с помощью примеров. Итак, давайте начнем.
1. Использование цикла for для подсчета в списке Python
В этом фрагменте кода мы используем цикл for для подсчета элементов списка Python, удовлетворяющих условиям или критериям. Мы перебираем каждый элемент списка и проверяем условие, если оно истинно, то мы увеличиваем счетчик на 1. Это простой процесс сопоставления и подсчета для получения интересующего нас количества.
2. Применение len() со списковыми включениями для подсчета в списке Python
В представленном ниже фрагменте кода, мы используем списковые включения (list comprehension), чтобы создать новый список, элементы которого соответствует заданному условию, после чего мы получаем длину собранного списка. Это намного легче понять на примере, поэтому давайте перейдем к нему.
Подсчет ненулевых элементов
3. sum() и выражение-генератор для подсчета в списке Python
4. sum() и map() для подсчета элементов списка Python с условиями или критериями
Функция map(fun, iterable) принимает два аргумента: итерируемый объект (это может быть строка, кортеж, список или словарь) и функцию, которая применяется к каждому его элементу, — и возвращает map-объект (итератор). Для применения одной функции внутри другой идеально подходит лямбда-функция. Таким образом, map() примет первый аргумент в виде лямбда-функции.
Давайте разберемся на примере, в котором переданная лямбда-функция предназначена для фильтрации членов списка, не кратных 5.
5. reduce() с лямбда-функцией для подсчета элементов списка Python с условием или критериями
Приведенный ниже код наглядно демонстрирует это.
Надеюсь, что вы узнали о различных подходах к подсчету элементов в списке Python с помощью условия или критериев для фильтрации данных.
Python: Получить количество элементов в списке
В этой статье мы рассмотрим, как получить количество элементов в списке в Python. Мы рассмотрим примеры получения всех элементов, уникальных элементов и элементов во вложенных списках.
Python: Получить количество элементов в списке
Вступление
Получение количества элементов в списке в Python является обычной операцией. Например, вам нужно будет знать, сколько элементов в списке, когда вы будете перебирать его. Помните, что списки могут иметь в качестве своих элементов комбинацию целых чисел, чисел с плавающей точкой, строк, логических значений, других списков и т. Д.:
Есть разные способы получить количество элементов в списке. Подходы различаются независимо от того, хотите ли вы считать вложенные списки одним элементом или всеми элементами во вложенных списках, или вас интересуют только уникальные элементы и тому подобное.
Встроенная функция len()
Давайте рассмотрим следующий пример:
Как следует из функции name, len() возвращает длину списка, независимо от типов элементов в нем.
Использование цикла for
Цикл заканчивается, когда он перебирает все элементы, поэтому счетчик будет представлять общее количество элементов в списке:
Запуск этого кода приведет к печати:
Получить количество уникальных элементов в списке
Мы видим, что list_d имеет в общей сложности 8 элементов, из которых 5 являются уникальными.
Список списков, использующих len()
Во введении мы видели, что элементы списков могут иметь различные типы данных. Однако списки, в свою очередь, могут иметь списки в качестве своих элементов. Например:
Получить количество элементов в списке, содержащем другие списки
Мы будем использовать встроенную функцию len() для получения длины:
В этом примере следует отметить несколько важных моментов. Во – первых, на этот раз пустой список не повлиял на общее количество. Это происходит потому, что в каждом цикле мы рассматриваем длину текущего вложенного списка, а поскольку длина пустого списка равна 0, то count увеличивается на 0.
Однако вы можете видеть, что каждый символ строки «char» засчитывается в общее количество элементов. Это происходит потому, что функция len() воздействует на строку, возвращая все ее символы. Мы можем избежать этой ситуации, используя тот же подход, что и в приведенном ниже разделе, который также позволит нам иметь элементы, отличные от списков.
Еще один интересный способ сделать то же самое, что и в предыдущем примере, – использовать понимание списка:
Вложенные списки
Вложенные списки-это списки, являющиеся элементами других списков. Может быть несколько уровней списков внутри друг друга:
Опять же, мы инициализируем переменную count в 0. Если мы хотим получить общее количество элементов во вложенном списке, нам сначала нужно проверить, является ли этот элемент списком или нет. Если это так, мы делаем цикл внутри списка и рекурсивно вызываем функцию до тех пор, пока не останется вложенных списков. Все элементы, отличные от списков (целые числа, строки и т. Д.), увеличат количество на 1.
Обратите внимание, что это также решение проблем, вызванных предыдущим подходом.
Давайте рассмотрим код для подсчета элементов во вложенных списках:
Запуск этого кода даст нам:
Вывод
Мы видели, что в зависимости от типа списка, который у нас есть, есть разные способы получить количество элементов. len() определенно самая быстрая и простая функция, если у нас есть плоские списки.
Со списками списков и вложенными списками len() не будет считать элементы внутри списков. Чтобы сделать это, нам нужно перебрать весь список.



