Why not just use .index()
?
In [1]: l = [ a, b, [c,d], e, f]
In [2]: l.index([c,d])
Out[2]: 2
In [4]: l.index(e)
Out[4]: 3
If you really need a recursive function, use the following:
def order(item, l, n=0):
if l:
if l[0] == item:
return n
elif len(l) >= 2: # for python 2, use "else:"
return order(item, l[1:], n+1)
And if recursion is not a must but you can’t use .index()
, use a for loop:
def order(item, l):
for i,v in enumrate(l):
if v == item:
return i
With both methods, just call order([c,d], lst)
нужно найти порядковый номер цифры в числе.
q = 123421434 #для примера
k=int(input())
print(int(q[k]))
После этого команда больше не работает,и все действия, происходящие после не учитываются. Хотелось бы узнать, почему так. Заранее благодарю
задан 24 окт 2020 в 11:30
потому что у вас q
это число, а к числу мы не можем обращаться по индексу. Чтобы обратится по индексу его надо перевести в строку
q = "123421434"
k=int(input())
print(int(q[k]))
ответ дан 24 окт 2020 в 11:36
DanisDanis
19.1k5 золотых знаков20 серебряных знаков55 бронзовых знаков
1
Встроенные функции
Язык Python включает много уже определенных, то есть встроенных в него, функций. Программист не видит их определений, они скрыты где-то в «недрах» языка. Достаточно знать, что эти функции принимают и что возвращают, то есть их интерфейс.
Ряд встроенных функций, касающихся ввода-вывода и типов данных, мы уже использовали. Это print()
, input()
, int()
, float()
, str()
, bool()
, type()
. Перечень всех встроенных в Python функций можно найти в официальной документации по языку: https://docs.python.org/3/library/functions.html .
В этом уроке рассмотрим следующие встроенные функции, условно разбив их на группы:
-
функции для работы с символами –
ord()
,chr()
,len()
-
математические функции –
abs()
,round()
,divmod()
,pow()
,max()
,min()
,sum()
Функция ord()
позволяет получить номер символа по таблице Unicode. Соответственно, принимает она в качестве аргумента одиночный символ, заключенный в кавычки:
>>> ord('z') 122 >>> ord('ф') 1092 >>> ord('@') 64
Функция chr()
выполняет обратное действие. Она позволяет получить символ по его номеру:
>>> chr(87) 'W' >>> chr(1049) 'Й' >>> chr(10045) '✽'
Чтобы не путать ord()
и chr()
, помните, что функция – это действие. Ее имя как бы отвечает на вопрос «Что сделать?». Order – это порядок. Значит, мы хотим получить порядковый номер элемента в ряду. А чтобы получить номер, должны передать символ. Character – это символ. Значит, мы хотим получить символ. Поэтому должны передать порядковый номер.
Функция len()
в качестве аргумента принимает объект, который состоит из более простых объектов, количество которых она подсчитывает. Числа – это простые объекты, их нельзя передавать в len()
. Строки можно:
>>> len('abc') 3 >>> s1 = '------' >>> s2 = '_______' >>> len(s1) > len(s2) False >>> len(s1) 6 >>> len(s2) 7
Кроме строк в len()
можно передавать другие, еще не изученные нами, структуры данных.
Функция abs()
возвращает абсолютное значение числа:
>>> abs(-2.2) 2.2 >>> abs(9) 9
Если требуется округлить вещественное число до определенного знака после запятой, то следует воспользоваться функцией round()
:
>>> a = 10/3 >>> a 3.3333333333333335 >>> round(a, 2) 3.33 >>> round(a) 3
Если второй аргумент не задан, то округление идет до целого числа. Есть одна специфическая особенность этой функции. Второй аргумент может быть отрицательным числом. В этом случае округляться начинают единицы, десятки, сотни и т. д., то есть целая часть:
>>> round(5321, -1) 5320 >>> round(5321, -3) 5000 >>> round(5321, -4) 10000
Функция именно округляет согласно правилу округления из математики, а не отбрасывает. Поэтому 5 тысяч неожиданно округляются до десяти.
>>> round(3.76, 1) 3.8 >>> round(3.72, 1) 3.7 >>> round(3.72) 4 >>> round(3.22) 3
Если нужно просто избавиться от дробной части без округления, следует воспользоваться функцией int()
:
Нередко функцию round()
используют совместно с функцией print()
, избегая форматирования вывода:
>>> a = 3.45673 >>> print("Number: %.2f" % a) Number: 3.46 >>> print("Number:", round(a, 2)) Number: 3.46
В последнем случае код выглядит более ясным.
Функция divmod()
выполняет одновременно деление нацело и нахождение остатка от деления:
>>> divmod(10, 3) (3, 1) >>> divmod(20, 7) (2, 6)
Возвращает она кортеж. В некоторых других языках встречаются две отдельные функции: div()
и mod()
. Первая делит нацело, вторая находит остаток от целочисленного деления (деления по модулю). В Python и многих других языках для этого используются специальные символы-операнды:
>>> 10 // 3 3 >>> 10 % 3 1
Функция pow()
возводит в степень. Первое число – основание, второе – показатель:
>>> pow(3, 2) 9 >>> pow(2, 4) 16
То же самое можно проделать так:
Однако pow()
может принимать третий необязательный аргумент. Это число, на которое делится по модулю результат возведения в степень:
>>> pow(2, 4, 4) 0 >>> 2**4 % 4 0
Преимуществом первого способа является его более быстрое выполнение.
Функции max()
, min()
и sum()
находят соответственно максимальный, минимальный элемент и сумму элементов аргумента:
>>> max(10, 12, 3) 12 >>> min(10, 12, 3, 9) 3 >>> a = (10, 12, 3, 10) >>> sum(a) 35
В sum()
нельзя передать перечень элементов, должна быть структура данных, например, кортеж. В min()
и max()
также чаще передают один так называемый итерируемый объект:
Практическая работа
-
Напишите программу, которая циклично запрашивает у пользователя номера символов по таблице Unicode и выводит соответствующие им символы. Завершает работу при вводе нуля.
-
Напишите программу, которая измеряет длину введенной строки. Если строка длиннее десяти символов, то выносится предупреждение. Если короче, то к строке добавляется столько символов
*
, чтобы ее длина составляла десять символов, после чего новая строка должна выводиться на экран. -
Напишите программу, которая запрашивает у пользователя шесть вещественных чисел. На экран выводит минимальное и максимальное из них, округленные до двух знаков после запятой. Выполните задание без использования встроенных функций
min()
иmax()
.
Примеры решения и дополнительные уроки в pdf-версии
курса
Списки в Python – упорядоченный изменяемый набор объектов произвольных типов, пронумерованных от 0. Они используются для хранения и работы с данными.
Список можно задать так:
Num = [9, 8, 7, 6, 5, 4, 3, 2, 1]
Для вывода каждого элемента используем его порядковый номер в списке:
Num = [9, 8, 7, 6, 5, 4, 3, 2, 1] print(Num[0]) ##Выведет 9 print(Num[3]) ##Выведет 6 print(Num[8]) ##Выведет 1
Также можно вывести тот или иной элемент списка с помощью его индекса с конца счета:
Num = [9, 8, 7, 6, 5, 4, 3, 2, 1] print(Num[-1]) ##Выведет 1 print(Num[-3]) ##Выведет 3 print(Num[-7]) ##Выведет 7
Можно вывести и весь массив с помощью того же метода print:
Num = [9, 8, 7, 6, 5, 4, 3, 2, 1] print(Num) ##Выведет [9, 8, 7, 6, 5, 4, 3, 2, 1]
Списки можно создавать с помощью генераторов списков. Такой способ схож с использованием цикла for, но этот гораздо компактнее в исполнении:
GenList = [ for GenList in ‘hello world’] print(GenList) ##Выведет ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
Рассмотрим конкатенацию списков (добавление одного списка в конец другого):
a = ['a', 'b'] b = [1, 2] c = a+b print(c) ##Выведет ['a', 'b', 1, 2]
Сами списки можно умножать на любые числа:
a = [1, 2] a = a*2 print(a) ##Выведет [1, 2, 1, 2]
Методы работы со списками
list.append(x) – добавляет элемент x в конец списка. Пример:
a = [1, 2] a.append(1) print(a) ##Выведет [1, 2, 1]
list.extend(x) – делает то же самое, что и операция с суммой списков, то есть добавляет в конец списка list элементы списка x. Пример:
a = [1, 2] a.extend(a) print(a) ##Выведет [1, 2, 1, 2]
list.insert(y, x) – вставляет элемент x в список list порядковым номером y. Пример:
a = [1, 2] a.insert(0, 2) print(a) ##Выведет [2, 1, 2]
list.remove(x) – удаляет первый элемент в списке list, который равен значению x. Пример:
a = [1, 2, 1] a.remove(1) print(a) ##Выведет [2, 1]
list.pop(y) – удаляет элемент списка list по порядковому номеру y. Если порядковый номер не задан, то удаляется последний элемент списка. Пример:
a = [1, 2, 1] a.pop(0) print(a) ##Выведет: [2, 1]
list.index(g, x, y) – возвращает порядковый номер первого элемента со значением g в списке list в диапазоне от x до y (диапазон можно не указывать, при этом поиск будет вестись по всему списку). Пример:
a = [1, 2, 1, 3] b = a.index(1, 1, 3) print(b) ##Выведет 2
list.count(x) – возвращает количество элементов со значением x в списке list. Пример:
a = [1, 2, 1, 3] b = a.count(1) print(b) ##Выведет 2
list.sort() – сортировка списка. По умолчанию сортировка идет по возрастанию. Также в виде параметра в метод можно передать функцию сортировки. Пример:
a = [2, 1, 3] a.sort() print(a) ##Выведет [1, 2, 3]
list.reverse() – переворачивает (реверсирует список). Пример:
a = [2, 1, 3] a.reverse() print(a) ##Выведет [3, 1, 2]
list.copy() – копирует список. Пример:
a = [2, 1, 3] newList = a.copy() a = a*2 print(newList) ##Выведет [2, 1, 3] print(a) ##Выведет [2, 1, 3, 2, 1, 3]
list.clear() – очищает список. Пример:
a = [2, 1, 3] a.clear() print(a) ##Выведет []
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Итог
Мы узнали, что такое списки в Python и как с ними работать. Надеюсь, что статья была для вас полезной. Удачи!
nikki4 22 / 16 / 7 Регистрация: 20.07.2010 Сообщений: 264 |
||||
1 |
||||
Как правильно узнать порядковый номер элемента в списке?17.05.2020, 19:58. Показов 40461. Ответов 4 Метки нет (Все метки)
Сделал так, но подозреваю, что так не оптимально и лучше по другому.
0 |
iSmokeJC Am I evil? Yes, I am! 16114 / 9000 / 2605 Регистрация: 21.10.2017 Сообщений: 20,702 |
||||
17.05.2020, 20:06 |
2 |
|||
nikki4, тогда уж
1 |
22 / 16 / 7 Регистрация: 20.07.2010 Сообщений: 264 |
|
17.05.2020, 20:08 [ТС] |
3 |
спасибо, но я имел ввиду как-нибудь так нельзя? наверняка же должна быть функция. но не нашел. а у меня аж 3 строчки кода с циклом. как-то заморочено
0 |
4611 / 3148 / 1112 Регистрация: 21.03.2016 Сообщений: 7,838 |
|
17.05.2020, 20:12 |
4 |
list.index(x, [start [, end]]) Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)
0 |
iSmokeJC Am I evil? Yes, I am! 16114 / 9000 / 2605 Регистрация: 21.10.2017 Сообщений: 20,702 |
||||
17.05.2020, 20:13 |
5 |
|||
Решение
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
17.05.2020, 20:13 |
5 |