Заметки Python #4: Строки, списки, кортежи, последовательности, словари

Обучение

Идём к заветному званию Junior. Продолжаем исследовать возможности Python

Содержание
  1. Индекс строки
  2. Индекс имеет тоже строковый тип данных (str)
  3. Срезы строки
  4. Срезать можно не только по числовым значениям. Если вы передали значение в переменную, например love = morsik.find [i love], а в другую hate = morsik.find [i hate], то в другую переменную можно записать диапазон life = [love:hate], т.е. он выведет весь кусок от слов i love до слов i hate
  5. Функции и методы
  6. Форматирование строк
  7. Списки. Кортежи
  8. Методы списка
  9. Другие методы можно посмотреть в документации или на pythonworld.ru
  10. Оператор In
  11.  Не забывайте, что найти элемент можно с помощью параметра find. Например, if name.find (‘Mors’) != -1, print (‘есть’). Но гораздо удобней просто написать if ‘mors’ in name
  12. Кортеж (Turle)
  13. Последовательности. Цикл For in. While или For?
  14. Функция range
  15. Параметры range
  16. Запомним: For — перебор последовательности без индекса, for range — перебор последовательности с индексом или нужно пропустить некоторые элементы, while — проверка условия, без последовательности.
  17. Словари (dict)
  18. Перебор словаря циклом for
  19. Множество (set)

Индекс строки

Как мы уже знаем, чтобы создать переменную строкового типа, нам нужно написать её в одинарных или в двойных кавычках (допустимы оба варианта). Например name =’Морсик’ или name = «Морсик». Так же можно получить любой символ в строке, обратившись к его индексу. Индексы в питоне, как и в других языках, начинают исчисление с нуля. Но в питоне, в отличие от того же C#, можно использовать отрицательный индекс (тогда отчет пойдет с конца строки)

[code]

my_girl = ‘Попкикс’

first = my_girl[0]

print(‘Первая буква в имени моей девушки:’,first)

last = my_girl [-1]

print(‘Последняя буква в имени моей девушки:’,last)

[/code]

Индекс имеет тоже строковый тип данных (str)

Срезы строки

Срезы позволяют получить несколько символов в строке, её часть. Диапазон задается двумя индексами. Т.е. вид будет name = [start:end], где старт — индекс начала среза, end — индекс конца среза (с какого по какой). Можно оставлять какой-то из них пустой, тогда отчет пойдет с начала или с конца строки. Тип данных среза тоже str (строка)

[code]

my_girl = ‘Попкинкс’

print(my_girl[:5]) # с начала строки до 5 элемента (или с нулевого индекса — можно записать как [0:5])

print(my_girl[4:5]) # С четвертого элемента по пятый (всего одна буква, т.к. ДО пятого, т.е. один четвертый)

print(my_girl[3:]) # С третьего элемента до конца строки

[/code]

Срезать можно не только по числовым значениям. Если вы передали значение в переменную, например love = morsik.find [i love], а в другую hate = morsik.find [i hate], то в другую переменную можно записать диапазон life = [love:hate], т.е. он выведет весь кусок от слов i love до слов i hate

Функции и методы

Так же для строки можно использовать фунцию len, которая узнает её длину и некоторые методы, которые позволяют нам работать со строковыми типами данных. Функции пишем с скобочках. Методы вызываем через точку.

len (morsik) — длина строки

morsik.find (‘m’) — ищет символ m в строке

morsik.splt — разделение строки через пробел

morsik.isdigit — проверяет, что у нас строка состоит только из чисел

Посмотрим как они работают:

[code]

my_girl = ‘Попкинкс Жопкинс’

print(len(my_girl)) # считает количество символов. Пробел между словами тоже считается за символ

# если такого отрезка нет в строке, то программа вернет нам «-1»
print (my_girl.find(‘Жоп’)) # Ищет кусок «Жоп» в строке. Результат показывает с какого индекса начинается эта фраза в строке

# Если никакие параметры не передавать, то split будет разбивать строку на части через пробел
# Но можно указать и свой разделитель
print (my_girl.split()) # Результатом команды будет Список.

print (my_girl.isdigit()) # Ответом будет логическое выражение (true или false). В нашес случае — false

[/code]

Форматирование строк

Функция строки format отвечает за форматирование строки, когда нам нужно вывести какие-то данные, не прибегая к конкатенации (методом «плюса»). Формат просто добавляется в конце строки и перечисляются все переменные, которые должны были туда войти (предварительно мы расставили в выводе фигурные скобки там, где нужно вставить переменные)

[code]

my_girl = ‘Попкинкс Жопкинс’
my_girl2 = ‘Морсик Коржик’
print(‘Мою девушку можно назвать {}, а можно и {}’. format(my_girl,my_girl2))

[/code]

Списки. Кортежи

Список (list) — это действительно список, который содержит в себе изменяемые объекты любого типа данных. Записывается через квадратные скобки:

my_list_1 = [258212124, true, ‘строка’]

Можно объявить пустой список, чтобы потом внести туда данные. Записывается с пустыми скобками. Тип списка — класс list

my_list_empty = []

<class ‘list’>

Список, как и строку можно перебирать по элементам, только возвращать программа будет не символ, а элемент списка:

print (mylist [0]) # вернет первый элемент списка

print (mylist [-1]) # вернет последний элемент списка

Можно применять и срезы. Тип данных при этом останется list

print (mylist [1:5]) # вернет элементы с первого по пятый

Методы списка

Как и в строке, в списке есть свои методы:

len (spisok) — возвращает длину списка

spisok.append (‘Morsik’) — добавляет в список элемент Morsik

spisok.remove (‘Morsik’)  — удаляет из списка элемент Morsik (удаляет по значению)

spisok.pop () — удаляет последний элемент со списка (выводит на экран при print)

del spisok [0] — удаляет первый элемент в списке (удаляет по индексу)

spisok.clear () — очищает весь список

Другие методы можно посмотреть в документации или на pythonworld.ru

Оператор In

Данный оператор позволяет проверить наличие элемента в вашем списке.

‘Morsik’ in my_list

Результатом будет логическое выражение (true или false). Тип данных: bool. Строки тоже можно проверять оператором in на наличие элемента в строке

‘M’ in ‘Morsik’

 Не забывайте, что найти элемент можно с помощью параметра find. Например, if name.find (‘Mors’) != -1, print (‘есть’). Но гораздо удобней просто написать if ‘mors’ in name

Кортеж (Turle)

Кортеж это тот же список (list), но в turple изменять элементы уже нельзя. Записывается в круглых скобках

my_girl (‘Morsik’, ‘Korzhik’, ‘Mostik’)

Последовательности. Цикл For in. While или For?

Это некий контейнер, где содержится последовательности их из каких-либо элементов. Для последовательностей можно применить цикл for in. Много вопросов связанных с тем, что лучше использовать: когда лучше while, когда лучше for.

Цикл for используется, когда у вас известно количество шагов в цикле (количество его итераций). Цикл while используется, когда мы этого не знаем — мы не знаем, когда у нас выполнится условие цикла, чтобы он завершился. while подходит для проверки каких-либо условий. for — для перебора элементов с заранее известным количеством этих самых элементов.

Вот как решается одна и та же задача разными циклами:

[code]

my_girl = [‘Morsik’, ‘Korzhik’, ‘Mostik’]

#while
i = 0
while i < len(my_girl):
my_girls = my_girl[i] print(my_girls)
i += 1
#for

for my_girl_1 in my_girl: #записываем в переменную my_girl_1 все элементы списка my_girl
print(my_girl_1)

[/code]

Функция range

Эта функция создает последовательность целых чисел. Работает в связке с циклом for. Если мы используем range для какой-либо переменной, тип у переменной будет range (по-простому — диапазон). Если мы просто присвоим переменной результат функции range, то через print мы увидим диапазон чисел, а не сами числа. Чтобы вывести все числа, нужно привести переменную в тип «Список» (list).

[code]

morsik = range(25)
print (morsik)
print (list(morsik))

[/code]

Параметры range

У функции range есть свои параметры, которые тоже можно использовать в коде: Начало или конец последовательности, конец последовательности и её шаг. Записывается это так:

range (start_or_end, end, step)

[code]

numbers = [1,3,5]

for number in numbers:
print (number)

print (list(range(1, 1000, 2))) # начинаем с единицы, доходим до 1000, шаг составляет 2

for number in range(1, 1000, 2): # использование range в цикле
print(number)

[/code]

Запомним: For — перебор последовательности без индекса, for range — перебор последовательности с индексом или нужно пропустить некоторые элементы, while — проверка условия, без последовательности.

Словари (dict)

Словарь в Питоне — это список неупорядоченных объектов с доступом по ключу. Словарь объявляется фигурными скобками {}, где указываем ключи и присваиваем им определенные значения:

my_dict {ключ1=значение1, ключ2=значение2}

Соответственно, основные действия со словарем это:

Получение элемента по ключу словаря —  names_of_my_girl[morsik]

Добавление элемента в словарь — names_of_my_girl[korzhik] = ‘Korzhik’

Изменение элемента в словаре — names_of_my_girl[korzhik] = ‘Ne korzhik’

Удаление элемента со словаря — remove names_of_my_girl[korzhik]

Оператор in — in korzhik in names_of_my_girl

Рассмотрим их все на примере:

[code]

names_of_my_girl = {
‘first_name’ :’Morzhik’,
‘second_name’:’Korzhik’,
‘third_name’:’Popkins’
}

print (names_of_my_girl) # выводим словарь
print (type(names_of_my_girl)) # выводим тип переменной — это у нас словарь, т.е. dict

# теперь обратимся к конкретному ключу из словаря

print(‘Второе имя моей девушки — ‘, names_of_my_girl [‘second_name’])

# теперь добавим в словарь ключ и присвоим ему значение

names_of_my_girl [‘age’] = 25

print(‘Ей’, names_of_my_girl[‘age’], ‘лет’)
print(names_of_my_girl) # проверяем, что ключ попал в словарь

[/code]

Кстати, именно словарем решается одна из часто встречающихся задачек на питоне «Вывести дату в текстовом виде

[code]

date = input (‘Введите дату в формате dd.mm.yyyy: ‘) # пользователь вводит дату
new_date = (date.split(‘.’)) # кортеж new_date, разделитель — точка
day = {’01’:’первое’, # словарь дней
’02’:’второе’,
’03’:’третье’,
’04’:’четвертое’,
’05’:’пятое’,
’06’:’шестое’,
’07’:’седьмое’,
’08’:’восьмое’,
’09’:’девятое’,
’10’:’десятое’,
’11’:’одинадцатое’,
’12’:’двенадцатое’,
’13’:’тринадцатое’,
’14’:’четырнадцатое’,
’15’:’пятьнадцатое’,
’16’:’шестьнадцатое’,
’17’:’семнадцатое’,
’18’:’восемнадцатое’,
’19’:’девятнадцатое’,
’20’:’двадцатое’,
’21’:’двадцать первое’,
’22’:’двадцать второе’,
’23’:’двадцать третье’,
’24’:’двадцать четвертое’,
’25’:’двадцать пятое’,
’26’:’двадцать шестое’,
’27’:’двадцать седьмое’,
’28’:’двадцать восьмое’,
’29’:’двадцать девятое’,
’30’:’дридцатое’,
’31’:’тридцать первое’}
month = {’01’:’января’, # словарь месяцев
’02’:’февраля’,
’03’:’марта’,
’04’:’апреля’,
’05’:’мая’,
’06’:’июня’,
’07’:’июля’,
’08’:’августа’,
’09’:’сентября’,
’10’:’октября’,
’11’:’ноября’,
’12’:’декабря’}
print(‘Сейчас {} {} {} года.’.format(day[new_date[0]], (month[new_date[1]]), new_date[2]))

[/code]

Перебор словаря циклом for

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

[code]

names_of_my_girl = {
‘first_name’ :’Morzhik’,
‘second_name’:’Korzhik’,
‘third_name’:’Popkins’
}

for key in names_of_my_girl.keys():
print(key) # печатает ключи
print(names_of_my_girl[key]) # печатает ключи со значениями

for val in names_of_my_girl.values():
print (val)# печатает значение

for key, val in names_of_my_girl.items():
print(key)
print(val)

[/code]

Множество (set)

Тип set или множество в питоне — это коллекция, которая содержит в себе только неповторяющиеся элементы. Объявляется так как и словарь (dict), но в нем нет пар ключ=значение, а только значение

my_girl = {‘mors’, ‘korzh’,’popkins’}

Если привести значение списка к set, то из него пропадут дубли. Для множества тоже есть свои действия, которые похожи на те, что мы изучали ранее

Добавление элемента во множество —  my_girl.add (‘Keksik’)

Удаление элемента из множества —  my_girl.remove (‘Keksik’)

Длина множества len

Работа с операторами in и циклом for

Объединение или пересечение множеств

Объединение обозначается |

Пересечение &

Вычитание —

Как это выглядит:

[code]

my_girl = {‘mors’, ‘korzh’,’popkins’}
print(my_girl)

my_girl.add(‘mosik’)

my_girl.remove (‘mors’)

print(my_girl)

print(len(my_girl))

for items in my_girl:
print(items)

# операции со множествами

morsik = {‘Виски’, ‘Шампанское’, ‘Кола’, ‘Сок’} # множество морсика
korzhik = {‘Виски’, ‘Ягер’, ‘Кола’, ‘Пиво’} # множество морсика

# всё бухлишко
print (morsik | korzhik) # элементы в множестве не повторяются!

# одинаковое бухлишко
print( morsik & korzhik) # пересечение

# какое бухлишко есть у морсика, но нет у коржика
print( morsik — korzhik)

[/code]

Оцените автора
( Пока оценок нет )
Digital 2 - Цифровая реальность
Добавить комментарий