Connect with us

Обучение

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

338

 

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

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

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

[code]

my_girl = ‘Попкикс’

first = my_girl[0]

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

last = my_girl [-1]

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

[/code]

 

Результат:

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

[adace-ad id=»3482″]

 

Срезы строки

Срезы позволяют получить несколько символов в строке, её часть. Диапазон задается двумя индексами. Т.е. вид будет 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, которая узнает её длину и некоторые методы, которые позволяют нам работать со строковыми типами данных. Функции пишем с скобочках. Методы вызываем через точку.

[adace-ad id=»3475″]

 

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 = [2, 5, 8, 2, 12, 12, 4, true, ‘строка’]

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

my_list_empty = []

<class ‘list’>

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

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

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

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

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

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

[adace-ad id=»3482″]

 

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

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]

 

Результат:

Нажмите что бы оставить комментарий

Ответить

Ваш адрес email не будет опубликован.

Лучшие сервисы стриминга музыки в 2019 году

Сервисы

Телевидение Wink Ростелеком: Samsung LG, Sony, Phillips, Android TV

Ростелеком

Ноутбуки Asus не видят жесткий диск. Автоматический вход в BIOS при старте

Гаджеты

LG WEB OS: приложения, обновления, настройка, проблемы со звуком

Гаджеты

Advertisement Яндекс.Метрика

Digital2.ru - Тренды, Профессии IT, WEB- разработка, Вакансии, Автоматизация, Цифровая экономика
Свободное копирование и распространение материалов с сайта Digital2.ru
разрешено только с указанием активной ссылки на Digital2 как на источник.
Copyright 2018 - 2020 © All rights reserved

OPGIO.COM

Connect