как узнать количество элементов списка python
Как узнать количество элементов списка python
Большинство программ работает не с отдельными переменными, а с набором переменных. Например, программа может обрабатывать информацию об учащихся класса, считывая список учащихся с клавиатуры или из файла, при этом изменение количества учащихся в классе не должно требовать модификации исходного кода программы.
Раньше мы сталкивались с задачей обработки элементов последовательности, например, вычисляя наибольший элемент последовательности. Но при этом мы не сохраняли всю последовательность в памяти компьютера. Однако, во многих задачах нужно именно сохранять всю последовательность, например, если бы нам требовалось вывести все элементы последовательности в возрастающем порядке (“отсортировать последовательность”).
Для хранения таких данных можно использовать структуру данных, называемую в Питоне список (в большинстве же языков программирования используется другой термин “массив”). Список представляет собой последовательность элементов, пронумерованных от 0, как символы в строке. Список можно задать перечислением элементов списка в квадратных скобках, например, список можно задать так:
В отличие от строк, элементы списка можно изменять, присваивая им новые значения.
В этом примере создается пустой список, далее считывается количество элементов в списке, затем по одному считываются элементы списка и добавляются в его конец. То же самое можно записать, сэкономив переменную n :
Для списков целиком определены следующие операции: конкатенация списков (сложение списков, т. е. приписывание к одному списку другого) и повторение списков (умножение списка на число). Например:
Последовательностями в Питоне являются строки, списки, значения функции range() (это не списки), и ещё кое-какие другие объекты.
Приведем пример, демонстрирующий использование цикла for в ситуации, когда из строки надо выбрать все цифры и сложить их в массив как числа.
2. Методы split и join
Используя специальную магию Питона — генераторы — то же самое можно сделать в одну строку:
У метода split() есть необязательный параметр, который определяет, какая строка будет использоваться в качестве разделителя между элементами списка. Например, вызов метода split(‘.’) вернет список, полученный разрезанием исходной строки по символам ‘.’ :
Если же список состоит из чисел, то придется использовать еще тёмную магию генераторов. Вывести элементы списка чисел, разделяя их пробелами, можно так:
3. Генераторы списков
Для создания списка, заполненного одинаковыми элементами, можно использовать оператор повторения списка, например:
Для создания списков, заполненных по более сложным формулам можно использовать генераторы: выражения, позволяющие заполнить список некоторой формулой. Общий вид генератора следующий:
где переменная — идентификатор некоторой переменной, последовательность — последовательность значений, который принимает данная переменная (это может быть список, строка или объект, полученный при помощи функции range ), выражение — некоторое выражение, как правило, зависящее от использованной в генераторе переменной, которым будут заполнены элементы списка.
Вот несколько примеров использования генераторов.
Создать список, состоящий из n нулей можно и при помощи генератора:
Создать список, заполненный квадратами целых чисел можно так:
Вот так можно получить список, заполненный случайными числами от 1 до 9 (используя функцию randrange из модуля random ):
А в этом примере список будет состоять из строк, считанных со стандартного ввода: сначала нужно ввести число элементов списка (это значение будет использовано в качестве аргумента функции range ), потом — заданное количество строк:
4. Срезы
Со списками, так же как и со строками, можно делать срезы. А именно:
Списки, в отличии от строк, являются изменяемыми объектами: можно отдельному элементу списка присвоить новое значение. Но можно менять и целиком срезы. Например:
Обратите внимание, A[i] — это элемент списка, а не срез!
Python Урок 4. Списки или массивы в Питоне
Часть I: Коллекции: Списки / массивы
Списки (массивы) в Питоне, как и в других языках программирования, — это определенное количество элементов, которые имеют общее имя, и каждый элемент имеет свой индекс — порядковый номер. В отличие от массивов в других языках, у списков нет никаких ограничений на тип переменных, поэтому в них могут храниться объекты разного типа.
Списки являются упорядоченными последовательностями, которые состоят из различных объектов (значений, данных), заключающихся в квадратные скобки [ ] и отделяющиеся друг от друга с помощью запятой.
В строку нельзя добавить новый символ или удалить существующий, не создав при этом новой строки.
s1=»breKeKeKeKs»; s1=s1.replace(‘Ke’,’XoXo’,2) s1 # breXoXoXoXoKeKs
Что касается списков, то при выполнении операций другие списки могут не создаваться, при этом изменяется непосредственно оригинал.
Из списков можно удалять и добавлять новые элементы.
Создание списков на Python
1. Получение списка через присваивание конкретных значений
s = [] # Пустой список
2. Списки при помощи функции List()
Получаем список при помощи функции List()
3. Создание списка при помощи функции Split()
4. Генераторы списков
Сложение одинаковых списков заменяется умножением:
# список из 10 элементов, заполненный единицами l = [1]*10 # список l = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
l = [i for i in range(10)] # список l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
c = [c * 3 for c in ‘list’] print (c) # [‘lll’, ‘iii’, ‘sss’, ‘ttt’]
l = [i*i for i in range(10)]
l = [(i+1)+i for i in range(10)] print(l) # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
from random import randint l = [randint(10,80) for x in range(10)] # 10 чисел, сгенерированных случайным образом в диапазоне (10,80)
Задание Python 4_5 (сложное):
Заполните массив элементами арифметической прогрессии. Её первый элемент, разность и количество элементов нужно ввести с клавиатуры.
* Формула для получения n-го члена прогрессии: an = a1 + (n-1) * d
Простейшие операции над списками
l = [1, 3] + [4, 23] + [5] # Результат: # l = [1, 3, 4, 23, 5]
[[0,0],[0,1],[1,1]] * 2 # [[0, 0], [0, 1], [1, 1], [0, 0], [0, 1], [1, 1]]
a=[3, 2, 1] a[1]=0; print(a) # [3, 0, 1]
s=input(‘введите строку’) l=list(str(s));
В питоне не нужно явно указывать размер списка или вручную выделять на него память. Длину списка можно узнать с помощью встроенной функции len :
names = [‘Ivan’, ‘Marie’, ‘Peter’, ‘Max’] print (len(names)) # 4
Ввод списка (массива) в языке Питон
L=[] L = [ int(input()) for i in range(5) ] # при вводе 1 2 3 4 5 print (L) # вывод: 1 2 3 4 5
Функция int здесь используется для того, чтобы строка, введенная пользователем, преобразовывалась в целые числа.
# вывод целого списка (массива) print (L) # поэлементный вывод списка (массива) for i in range(5): print ( L[i], end = » » )
Замечание: Для вывода через «,» используйте следующий синтаксис:
9 5 4 22 23 7 3 16 16 8 Минимальный элемент списка L[7]=3
Часть II: Другие операции над списками при помощи функций
Python. Урок 7. Работа со списками (list)
Одна из ключевых особенностей Python, благодаря которой он является таким популярным – это простота. Особенно подкупает простота работы с различными структурами данных – списками, кортежами, словарями и множествами. Сегодня мы рассмотрим работу со списками.
Что такое список (list) в Python?
Как списки хранятся в памяти?
Как уже было сказано выше, список является изменяемым типом данных. При его создании в памяти резервируется область, которую можно условно назвать некоторым “контейнером”, в котором хранятся ссылки на другие элементы данных в памяти. В отличии от таких типов данных как число или строка, содержимое “контейнера” списка можно менять. Для того, чтобы лучше визуально представлять себе этот процесс взгляните на картинку ниже. Изначально был создан список содержащий ссылки на объекты 1 и 2, после операции a[1] = 3, вторая ссылка в списке стала указывать на объект 3.
Более подробно эти вопросы обсуждались в уроке 3 (Типы и модель данных).
Создание, изменение, удаление списков и работа с его элементами
Создать список можно одним из следующих способов.
Также можно создать список с заранее заданным набором данных.
Если у вас уже есть список и вы хотите создать его копию, то можно воспользоваться следующим способом:
или сделать это так:
В случае, если вы выполните простое присвоение списков друг другу, то переменной b будет присвоена ссылка на тот же элемент данных в памяти, на который ссылается a, а не копия списка а. Т.е. если вы будете изменять список a, то и b тоже будет меняться.
Добавление элемента в список осуществляется с помощью метода append().
Для удаления элемента из списка, в случае, если вы знаете его значение, используйте метод remove(x), при этом будет удалена первая ссылка на данный элемент.
Если необходимо удалить элемент по его индексу, воспользуйтесь командой del имя_списка[индекс].
Изменить значение элемента списка, зная его индекс, можно напрямую к нему обратившись.
Очистить список можно просто заново его проинициализировав, так как будто вы его вновь создаете. Для получения доступа к элементу списка укажите индекс этого элемента в квадратных скобках.
Можно использовать отрицательные индексы, в таком случае счет будет идти с конца, например для доступа к последнему элементу списка можно использовать вот такую команду:
Для получения из списка некоторого подсписка в определенном диапазоне индексов, укажите начальный и конечный индекс в квадратных скобках, разделив их двоеточием.
Методы списков
list.append(x)
Добавляет элемент в конец списка. Ту же операцию можно сделать так a[len(a):] = [x].
list.extend(L)
Расширяет существующий список за счет добавления всех элементов из списка L. Эквивалентно команде a[len(a):] = L.
list.insert(i, x)
Вставить элемент x в позицию i. Первый аргумент – индекс элемента после которого будет вставлен элемент x.
list.remove(x)
Удаляет первое вхождение элемента x из списка.
Удаляет элемент из позиции i и возвращает его. Если использовать метод без аргумента, то будет удален последний элемент из списка.
list.clear()
Удаляет все элементы из списка. Эквивалентно del a[:].
list.index(x[, start[, end]])
Возвращает индекс элемента.
list.count(x)
Возвращает количество вхождений элемента x в список.
list.sort(key=None, reverse=False)
Сортирует элементы в списке по возрастанию. Для сортировки в обратном порядке используйте флаг reverse=True. Дополнительные возможности открывает параметр key, за более подробной информацией обратитесь к документации.
list.reverse()
Изменяет порядок расположения элементов в списке на обратный.
list.copy()
Возвращает копию списка. Эквивалентно a[:].
List Comprehensions
List Comprehensions чаще всего на русский язык переводят как абстракция списков или списковое включение, является частью синтаксиса языка, которая предоставляет простой способ построения списков. Проще всего работу list comprehensions показать на примере. Допустим вам необходимо создать список целых чисел от 0 до n, где n предварительно задается. Классический способ решения данной задачи выглядел бы так:
Использование list comprehensions позволяет сделать это значительно проще:
или вообще вот так, в случае если вам не нужно больше использовать n:
List Comprehensions как обработчик списков
Пусть у нас есть список и нужно получить на базе него новый, который содержит элементы первого, возведенные в квадрат. Решим эту задачу с использованием циклов:
Через списковое включение эта задача будет решена так:
Построим на базе существующего списка новый, состоящий только из четных чисел:
Решим эту задачу с использованием filter :
Решение через списковое включение:
Слайсы / Срезы
Типо “List Comprehensions”… в генераторном режиме
Создадим список, используя списковое включение :
проверим тип переменной a:
и посмотрим сколько она занимает памяти в байтах:
Для создания объекта-генератора, используется синтаксис такой же как и для спискового включения, только вместо квадратных скобок используются круглые:
Сейчас уже разница существенна, как вы уже поняли, размер генератора в данном случае не будет зависеть от количества чисел, которые он должен создать.
Если вы решаете задачу обхода списка, то принципиальной разницы между списком и генератором не будет:
Но с генератором нельзя работать также как и со списком: нельзя обратиться к элементу по индексу и т.п.
P.S.
Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.
Python. Урок 7. Работа со списками (list) : 46 комментариев
там ошибка
Изменить значение элемента списка, зная его индекс, можно напрямую к нему обратившись.
>>> d = [2, 4, 9]
>>> print(d)
[2, 4, 9]
>>> d[1] = 17 индекс указан первый, следовательно должен измениться первый элемент.
>>> print(d)
[2, 17, 9] а тут изменен второй элемент. Вывод должен выглядеть так [17, 4, 9] Если я не
ошибаюсь)))
В Python элементы списка нумеруются с нуля. Поэтому в списке [2, 4, 9], элемент с индексом 1 – это 4, и если мы сделаем присваивание d[1] = 17, то поменяем средний элемент в списке, так как это показано в примере!
Удачи!
ой спасибо за обьяснение)) изивиняюсь за ложные обвинения и невнимательность)))
Пожалуйста! Спасибо вам за интерес к блогу)))
Отщет начинается с нуля
Ошибаешься, индексы считаем с 0
Нумераци индексов списка идёт не с едины (1) а с нуля следовательно чтобы вам вместо двоики поставить число 17
d [0] = 17
print (d)
Это не только в Python так, это вообще в программировании. В любом языке, насколько я знаю.
Можно сделать так:
d = [2, 4, 12, 5]
a = 4
if a in d:
print(“YES”)
Только четыре пробела не забудьте перед print(“YES”) (в комментах не получается код нужным образом отформатировать)
ну, как бы, есть in, который вернет True, если такой элемент есть, и False иначе. И есть count, который вернет количество элементов, если есть такие. Зачем именно сравнивать?
Можно и не 4 пробела, а всего 1. А лучше всего табуляция.
Нее! Нужно именно четыре)) Но проблема уже решена!
можно 1 пробел, если в той же строке
Здравствуйте! А можете, пожалуйста, объяснить, как работает “for in” со списками. Я не понимаю. Я привык к языкам, где в основном доступ по индексу, сложно понять работу “for in”. Как работает цикл: по индексам от 0 до длины списка, или абы как достает элемент, т.е. необязательно по возрастанию индекса элемента? Мне бы хотелось знать индекс элемента, который я обрабатываю в цикле. Лучше завести отдельно переменную counter, которая будет считать или использовать list.index(value). Или во втором случае будет вызываться не атрибут элемента, а будет происходить именно поиск такого элемента, т.е. сложность будет линейная?
Еще надо учесть, что когда вы работаете со списком, перебирая его ЭЛЕМЕНТЫ с помощью for, изменение этих ЭЛЕМЕНТОВ не ведет к изменению элементов самого списка (как бы дико это ни звучало!). Это – очень разные элементы. Поясню на примере.
При обработке списка может возникнуть потребность изменить элемент списка по какому-то условию.
Например, есть список
F_List = [1,2,3,4,6,9] и требуется проверить все элементы, и каждый элемент, который равен 4, увеличить на 10.
Казалось бы, берем элемент списка, сравниваем с 4, если “да”, меняем элемент, если “нет”, берем следующий. Т.е.:
F_List = [1,2,3,4,6,9]
for element in F_List:
if element == 4:
element += 10
Однако, проверив список:
print(F_List)
получим
[1, 2, 3, 4, 6, 9]
Т.к. я комментирую вопрос новичка, не буду углубляться в теорию, и объяснять, почему так происходит. Как говорится в известном анекдоте: “Эта нэвазможна панят, эта нада запомнит”.
Изменить элемент списка можно только, обратившись к самому списку по индексу элемента, который можно определить вызвав функцию index(). Например, вот так:
F_List = [1,2,3,4,6,9]
for element in F_List:
if element == 4: # т.е. проверять element можно.
F_List[F_List.index(element)] += 10 # но вот присваивать значение нужно совсем другой штуке:
# N-ному элементу списка, при этом N – это индекс element’a
# Вот такой он, Python.
Проверим:
print(F_List)
Получим:
[1, 2, 3, 14, 6, 9] т.е. именно то, что мы и хотели
И, кстати, дополню, что более коротким (но, наверное, с первого раза – менее понятным) способом обработать список из примера выше можно единственным генератором:
F_List = [element+10 if element==4 else element for element in F_List]
Здравствуйте! Возможно ли с помощью команды pop удаление несколько элементов списка или промежуток? Если да напишите пожалуйста пример.
Что,то похожее с:
motorcycles_5 = [‘ducati’, ‘honda’, ‘ktm’, ‘motogucci’, ‘yamaha’, ‘suzuki’, ‘ural’]
# Удаляю элементы списка motorcycles_5 с 0 по 3
del motorcycles_5[0:3]
print(motorcycles_5)
# Удаляю все элеметы списка motorcycles_5 с помощью команды del
del motorcycles_5[:]
print(motorcycles_5)
Добрый день!
Нет, с помощью pop нельзя удалить за раз несколько элементов списка. Его назначение – извлечение элемента (чаще всего последнего). А чем вас не устраивает del?
в примере для
>>list.insert(i, x)
написано так:
“Вставить элемент x в позицию i. Первый аргумент – индекс элемента после* которого будет вставлен элемент x.”
*хотя, по смыслу примера, вставка происходит прямо по индексу i, а не после. Элементы сдвигаются.
Для получения из списка некоторого подсписка в определенном диапазоне индексов, укажите начальный и конечный индекс в квадратных скобках, разделив их двоеточием.
Это же упоминается работа с подмножеством, элементов списка ‘a’. Подмножество списка в python называется срез (slice)
Почему у всех объектов один список?
lis = []
for i in range(4):
o = O()
o.k.append(i)
lis.append(o)
for i in lis:
print(i.k)
output:
[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3]
А Вы не могли бы написать пример Вашей программы (т.к. сайт “обрезает отступы) с комментариями в виде:
lis = [] # нет отступов
class O: # нет отступов
k = [] # 4 отступа
for i in range(4): # 8 отступов
o = O() # 12 отступов
и т.д.
Тогда будет понятнее, где искать ошибку. И, кстати, а что Вы хотели получить, т.е. какова идея программы?
И не используйте, пожалуйста, имена типа O, o, l и т.п. (см. PEP 808).
Это не то что мне нужно
Здравствуйте! Изучаю пайтон и столкнулся с такой проблемкой. У меня есть много списков, которые состоят из текста в формате:
[list1]
[list2]
..
[list n]
Подскажите, пож, могу ли я все эти списки объединить в один список и как?
result = [list1] + [list2] + … + [list n]
Здравствуйте. Как в списке определить сколько раз встречается цифра? Отличный сайт.
Вопрос не очень понятен: уточните вид списка (он состоит из одиночных символов или из строк произвольной длины, или тип данных в списке не определен…), нужно определить частоту какой-то конкретной цифры или просто любой цифры от 0 до 9 и т.п.? Может, просто приведете условный пример списка?
Как вычислить четные числа в списке?
import array as arr
a = arr.array(‘i’)
for i in range(0,20):
if a[i]%2 == 0:
print(“Zhup sandar = “, a[i])
есть список
работа со списками:
sp = [23, 40, 60, 70, 60]
команда print(sp.index(60))
возвращает в списке индекс счисла “60”.
тоесть возвратит цифру “2”.
Вопрос.:Как возвратить индекс второго числа “60” в списке?
ест ьсписко
sp = [90, 90, 57, 23, 65, 46]
Задача: вывести индекс каждого числа:
Пишу
itr = iter(sp)
for i in sp:
print(sp.index(next(itr)))
В итоге выводится в столбик
0
0
2
3
4
5
Вопрос: почему нет цифры “1”?
По идее она должна быть и показывать индекс второго числа “90”
1. можно написать короче
sp = [90, 90, 57, 23, 65, 46]
for i in sp: print(sp.index(next(itr))) # написал в одну строку, чтоб избежать проблем с пробелами, так тоже будет работать
не понятно зачем в примере используется iter
2. sp.index метод возвращает не индекс текущего элемента, а индекс ПЕРВОГО НАЙДЕННОГО элемента в вашем случае 90 впервые встречается в списке под индексом 0
3. для получения индекса используйте метод enumerate
Например так…
for i, e in enumerate(sp): print(i,e)
Здраствуйте, а можете подсказать как изменить знак на всех элементах списка?
Здравствуйте, подскажите пожалуйста как я могу поменять элементы списка задом наперед не используя отрицательный срез и функцию reserve? Чтобы получись х=[10,9,8,7,6,5,4,3,2,1] вместо х=[1,2,3,4,5,6,7,8,9,10]
да, но имей в виду
1. у тебя в примере русская буква “х”, а не латинский икс 😉
2. вызвав х.reverse(), в переменной х сохранится развернутый список
Типо “List Comprehensions”… в генераторном режиме
Автору спасибо! Отличная статья.
Сам только изучаю Python но такого качества статей не много
Понравилось, что не просто обзор методов класса, а то что автор:
1. расширил их с помощью методов типа map и filter, здоро во еще было бы добавить несколько еще методов, например enumerate
2. всё сопровождается примерами, причём разными на разный уровень читателя 🙂
А еще молодцы те, кто в комментах задают вопросы, это почти как ДЗ для усвоения материала))
Добрый день! Изучаю Python, есть такое задание “Из приведённого выше списка списков выведите с помощью индексов число 7”. Ниже, собственно, список:
L = [[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]],
[[21, 22, 23, 24, 25, 26, 27, 28, 29, 30], [31, 32, 33, 34, 35, 36, 37, 38, 39, 40]],
[[41, 42, 43, 44, 45], [46, [47, 48], 49, 50], [51, 52, 53, 54, 55], [56, 57, 58, 59, 60]],
[61, 62, 63, [64, 65, 66, 67, 68, 69, 70, 71], 72, 73, 74, [75, [76, 77, 78], 79], 80],
[81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]]
Решил я его криво-косо “print(L[0][0][6])”, но что-то мне подсказывает, что такое решение в корне не верно. Прошу подсказать, как осуществлять поиск значения в списке списков?
Добрый день. Подскажите, а как сделать, что данные вводим просто числа, а в результате должны получить список этих же чисел, но уже в одиночных кавычках
data = 4,6,7,8 … # и т. д какие-то числа
data = list(data)
print(data)
Всем привет.
Начал изучать пайтон, не мгу решить проблему:
lis[1,2,3,[‘a’,’b’,’c’,55]]
вибрать елемент по его номеру через print(…)
програма видает такое:
TypeError: ‘int’ object is not subscriptable
Работа со списками в Python
Работа со списками в Python — довольно объемная часть, но хочу сразу отметить, что нет ничего сложного, все доступно и просто,если возникают вопросы, пишите свои вопросы в комментариях.
В прошлой статье, мы довольно хорошо изучили работу с числами, в этой статье так же продолжим изучать типы данных python. На очереди у нас списки, разберем создание списков, срезы, добавление, удаление элементов.
Как создать список?
Так же, список может содержать внутри себя еще один список.
Индекс списка
Счет индекса в списках, в целом как и в программировании начинается с 0, таким образом список который имеет 5 элементов, будет иметь индекс от 0 до 4.
Так же в Python есть и отрицательная индексация.
Нарезка списков/Срезы
Срезы на мой взгляд для лучшего понимания, стоит визуализировать. Но в целом логи среза довольна проста, и удобна. Если мы хотим получить диапазон элементов, мы берем два индекса, для среза той части, которая нас интересует.
Добавление/Изменение элементов списка
Удалить элемент из списка
Методы списка Python
Генерирование списка
В качестве примера, для генерации списка, рассмотрим вариант списка, где каждый последующий элемент увеличивается в два раза, определенное количество раз.
Генератор списков, так же может содержать в себе и определенные условия, по которым будет генерироваться список.
Проверка наличия элемента в списке
Итерация по списку
Итерацию по списку мы с вами рассматривали в статье про цикл for, немного повторим пройденный материал.