Архив автора: admin

Контейнер Namedtuple в Python

Python предлагает множество встроенных структур данных, таких как списки, словари и кортежи, для эффективного хранения и управления данными. Namedtuple — это контейнер, подобный словарю, доступный в модуле «collections». Подобно словарям, namedtuple также содержит ключи, сопоставленные значениям. Однако namedtuple позволяет получить доступ к значениям через ключи, а также через индексы. По сравнению со словарями Python доступ к значениям через индексы является дополнительной функциональностью в namedtuple. В этой статье подробно описывается Python namedtuple с примерами.

 

Доступ к значениям из namedtuple

Доступ к значениям внутри namedtuple можно получить следующими способами:

  1. Используя ключи
  2. Используя индексы
  3. Используя функцию getattr()

Поскольку namedtuple преобразует поле в атрибуты, получить доступ к значениям можно с помощью функции getattr().

 

Примеры

Теперь давайте посмотрим на несколько примеров, чтобы понять создание и работу namedtuple. Чтобы создать и использовать namedtuple, сначала нам нужно импортировать модуль коллекций. В приведенном ниже примере создается именованный кортеж для учителя. Ключи именованного кортежа — это имя, возраст и отдел соответственно. Доступ к значениям осуществляется с помощью индексов и ключей.

# импорт модуля коллекций



import collections



# создание именованного кортежа для учителя #



имя, возраст и отдел - это ключи



Teacher = collections . namedtuple('Teacher',['name', 'age', 'department' ])



# создать нового учителя и добавить значения



Teacher_AndreyEx = Teacher("AndreyEx", 35, "Computer Science")

# доступ к значениям учителя с помощью indexes print(«Доступ к значениям с помощью индексов:») print(«Имя учителя:», teacher_AndreyEx[0]) print(«Возраст учителя:», teacher_AndreyEx[1]) print(«Отдел учителя:», teacher_AndreyEx[2])

 

 

# доступ к значениям учителя с помощью клавиш print(«Доступ к значениям с помощью ключей:») print(«Имя учителя:», teacher_AndreyEx.name) print(«Возраст учителя:», teacher_AndreyEx.age) print(«Учительский отдел:», teacher_AndreyEx.department)

 

 

Теперь давайте обратимся к значениям с помощью функции getattr(). Именованный кортеж и ключ передаются в качестве аргумента функции getattr().

# импорт модуля коллекций

import collections 

# создание именованного кортежа для учителя

 

# имя, возраст и отдел - это ключи



Teacher = collections . namedtuple('Teacher', ['name', 'age', ' department '])



# создать нового учителя и добавить значения



Teacher_AndreyEx = Teacher("AndreyEx", 35, "Computer Science") #



доступ к значениям учителя с помощью функция getattr()



print(getattr (teacher_AndreyEx, "name"))



print(getattr(teacher_AndreyEx, "age"))



print( getattr( teacher_AndreyEx, "department" ) )

 

Популярные операции namedtuple

Некоторые популярные функции преобразуют другие коллекции, такие как списки, словари и кортежи, в namedtuple и возвращают информацию об namedtuple. Ниже приведены функции, которые преобразуют другие коллекции в namedtuple:

  • _сделать()
  • _asdict()
  • оператор **

Функция _make() преобразует итерируемый объект, такой как список и кортеж, в именованный набор. Функция _asdict() создает orderDict из именованного кортежа и возвращает его. Наконец, оператор ** преобразует словарь в именованный набор. Кроме того, функции, возвращающие информацию namedtuple, следующие:

  • _fields
  • _replace()

Функция _fields() возвращает все поля именованного кортежа, тогда как функция _replace() заменяет конкретное значение другим значением.

Давайте реализуем упомянутые выше функции в нашем скрипте Python для преобразования различных коллекций в namedtuple.

# импорт модуля коллекций



import collections 



# создание именованного кортежа для учителя



# имя, возраст и отдел - это ключи 



Teacher = collections.namedtuple('Teacher', ['name', 'age', 'department' ]) 



# создать нового учителя и добавить значения 



Teacher_AndreyEx = Teacher("AndreyEx", 35, "Computer Science") 



# создать список 



Teacher_list =["Alex","Business Administration" ] 



# создание словаря



teacher_dict = { 'name' : 'Maria', 'age' : 25, 'department' : 'Economics' } 



# используя функцию _make() для преобразования списка в namedtuple 



print("List to преобразование namedtuple: ") 



print(Teacher._make(teacher_list)) 



# использование функции _asdict() для создания OrderDict 



print(" Making the OrderedDict: ") 



print(teacher_AndreyEx._asdict()) 



# использование ** для преобразования словаря в именованный кортеж 



print("Преобразование словаря в именованный кортеж:") 



print(Учитель(** teacher_dict))

 

Теперь давайте воспользуемся функциями _fields() и _replace(), чтобы получить информацию о ключах и заменить ключи соответственно.

# импорт модуля коллекций



import collections



# создание именованного кортежа для учителя #



имя, возраст и отдел - это ключи



Teacher = collections.namedtuple('Teacher',['name', 'age', 'department' ])



# создайте нового учителя и добавив значения



Teacher_AndreyEx = Teacher("AndreyEx", 35, "Computer Science")



# используя функцию _fields, чтобы получить ключи namedtuple



print("Ключи namedtuple:")



print(Teacher._fields)



# использование функции _replace для замены значения



print("Значение замены имени:")



print(teacher_AndreyEx._replace(name = 'Master'))

 

В выходных данных видно, что функция _fields возвращает ключи информации, а функция _replace() успешно заменяет имя.

 

Вывод

Namedtuple — это контейнер, подобный словарю, присутствующий в модуле «коллекции». Он содержит ключ и сопоставляет значения с ключом. В отличие от словаря Python, к значениям namedtuples также можно получить доступ с помощью индексов и функции getattr(). В этой статье на примерах кратко объясняется именованный кортеж.



2020-12-01T16:14:14
Python

Функция zfill() в Python

Благодаря универсальности и доступности обширных встроенных модулей, функций и операторов Python в настоящее время является широко используемым языком программирования общего назначения. Встроенные функции Python помогают программистам очень просто и эффективно выполнять сложные задачи. Zfill() — это встроенная функция Python, которая обнуляет слева от строки, чтобы заполнить заданную ширину и вернуть копию строки. Он создает строку с дополнениями, добавляя нули. В этой статье демонстрируется использование функции Python zfill().

 

Синтаксис

Сначала обсудим синтаксис функции zfill(). Синтаксис функции zfill() следующий:

str_name. zfill (width)

Функция zfill() принимает ширину в качестве аргумента и регулирует ноль в левой части строки в соответствии с указанной шириной. Ширину также можно рассматривать как длину струны.

 

Пример 1: Использование функции zfill()

Например, строка содержит три символа; это означает, что исходная ширина строки равна 3. Когда мы вызываем функцию zfill() и указываем ширину 15, она добавит 12 нулей и добавит левую сторону строки, чтобы заполнить ширину. Пробелы также увеличивают ширину. Давайте посмотрим на пример. Ширина строки hello изначально равна 5.

# определение строки

my_str = ‘hello’

# использование функции zfill()

print(my_str. zfill(10))

 

Слева к строке добавлено пять нулей.

 

Теперь давайте добавим два пробела в нашу строку и сделаем это «он ушел». Теперь исходная ширина строки равна 7.

# определение строки

my_str = ‘he ll o’

# использование функции zfill()

print(my_str. zfill(10))

 

Давайте посмотрим на другой пример функции zfill().

# определение строки

my_str = ’10’

print(«Исходная строка:» , my_str )

# использование функции zfill()

print(«Возвращаемая функцией zfill() строка:» , my_str. zfill(10))

Добавлены 8 нулей.

 

Пример 2: Использование функции zfill()

Если мы передадим в функцию zfill() ширину меньше исходной ширины строки, то ничего не произойдет. Давайте посмотрим на пример.

В приведенном ниже примере исходная длина или ширина строки равна 9. В функции zfill() мы указали ширину 3. В этом случае она не добавляет нулей слева и не отображает ошибку.

# определение строки

my_str = ‘AndreyEx_’

print(«Исходная строка:» , my_str )

# Использование функции zfill()

print(«Функция zfill() возвращает строку:» , my_str. zfill(3))

 

Пример 3: Использование функции zfill() с префиксом знака

Функция zfill() работает иначе, если строка начинается с префикса знака. Он добавляет нули в левую часть строки после префикса первого знака. Посмотрим на пример.

# определение строки

my_str = ‘+ AndreyEx_’

print(«Исходная строка:» , my_str )

# Использование функции zfill()

print(«Возвращаемая функция zfill() строка:» , my_str. zfill(13))my_str = ‘+10’

print(«Исходная строка:» , my_str )

# Использование функции zfill()

print(«Возвращаемая функция zfill() строка:» , my_str. Zfill(13))my_str = ‘—20’

print(«Исходная строка:» , my_str )

# Использование функции zfill()

print(«Возвращаемая функция zfill() строка:» , my_str. zfill(13))

 

Вывод

Zfill() — встроенная функция Python, которая принимает ширину в качестве аргумента и заполняет нули слева от строки в соответствии с указанной шириной. В этой статье подробно обсуждается функция Python zfill().



2020-12-01T14:56:11
Python

Как преобразовать строку в целое число в Python

Все типы данных в Python, включая целые числа и строки, являются объектами. Часто при написании кода Python вам необходимо преобразовать один тип данных в другой. Например, чтобы выполнить математическую операцию с числом, представленным в виде строки, его необходимо преобразовать в целое число.

В этой статье мы покажем вам, как преобразовать строку Python в целое число.

Функция Python int()

Встроенная функция int() возвращает десятичный целочисленный объект из заданного числа или строки. Он имеет следующий вид:

int(x, base=10)

Функция принимает два аргумента:

  • x — строка или число, которое нужно преобразовать в целое число.
  • base — представляет собой систему счисления первого аргумента. Его значение может быть 0 и 2–36. Это необязательный аргумент. Если база не указана, по умолчанию используется 10 (десятичное целое число).

Обычно целые числа выражаются в шестнадцатеричной (основание 16), десятичной (основание 10), восьмеричной (основание 8) или двоичной (основание 2) нотации.

Если данная строка не может быть представлена как целое число, функция вызовет исключение ValueError .

Преобразование строки Python в целое число

В Python «строка» — это список символов, который объявляется с использованием одинарных ( ' ), двойных ( " ) или тройных кавычек ( """ ).

Если переменная, содержащая только числа, объявляется с использованием кавычек, ее тип данных устанавливается на String. Рассмотрим следующий пример:

days = "23"
type(days)

Функция type() показывает нам, что переменная days является объектом String .

<type 'str'>

Попробуем произвести математическую операцию с переменной:

print(days+5)

Python TypeError исключения TypeError потому что он не может выполнить вычисление сложения со строкой и целым числом:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects

Чтобы преобразовать строковое представление десятичного целого числа в int , передайте строку в функцию int() , которая возвращает десятичное целое число:

days = "23"days_int = int(days)type(days_int)

<type 'int'>

Если вы сейчас попытаетесь выполнить вычисления, операция суммирования будет выполнена успешно:

print(days_int+5)

28

Если число включает запятые, отмеченные тысячами, миллионами и т. Д., Вам необходимо удалить запятые перед передачей числа в функцию int() :

total = "1,000,000"int(total.replace(",", ""))

1000000

При преобразовании строк, представляющих целые числа в разных системах счисления, убедитесь, что вы используете правильное base .

Например, в шестнадцатеричной системе число 54732 представлено как D5CF . Чтобы преобразовать его в десятичное целое, вам нужно использовать основание 16:

int("D5CF", 16)

54735

Если вы D5CF строку D5CF в функцию int() без установки базы, она выдаст исключение ValueError :

int("D5CF")

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'D5CF'

Выводы

В Python вы можете преобразовать строку в целое число с помощью функции int() .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-11-30T21:48:44
Python

Как оптимизировать бизнес-процессы в B2B

Бизнес в сфере b2b предполагает многофакторное принятие решения о покупке, сложный путь к заключению сделки и высокие требования к клиентскому сервису. Управление этими процессами отнимает много ресурсов у предприятия: ведь оптовой компании 80% дохода приносят 20% постоянных клиентов, тогда как обслуживание потенциальных покупателей отнимает все время менеджеров по продажам.

Как сократить это время с помощью цифрового изменения бизнеса, расскажет материал о цифровизации производственных процессов. Мы же остановимся на возможности оптимизировать деятельность компании и управление персоналом.

Оптимизация управления предприятием: что это дает

Привычка не чинить то, что и так работает, нередко удерживает компанию от внедрения каких-либо изменений. Но в этом таятся и подводные камни: пока предприятие двигается по устаревшим, но отработанным процедурам, конкуренты запускают новые решения, обеспечивающие им преимущества на рынке.

Свои коррективы вносит и пандемия: в удаленном режиме с ограничением личных встреч бизнесу для бизнеса (b2b) многие процессы приходится выстраивать с нуля, и это не всегда делает их эффективными. Так что в условиях карантина пересмотр всех рабочих операций может оказаться лучшим решением.

Преимущества, которые будут обеспечены новой системой и процессами:

  • Безошибочно точные результаты. B2b-система не знает усталости, не допускает ошибок из-за невнимательности или торопливости. Это стандартизированные операции, которые всегда дают предсказуемый эффект.
  • Скорость выполнения операций. B2b-система поддерживает высокие нагрузки и мгновенно выполняет все задачи. Это позволяет сэкономить 30-50% времени менеджеров, освобождая их для поиска новых заказчиков.
  • Интеграция с 1C, ERP, CRM, ЭДО, сторонними торговыми сайтами. Благодаря этому система немедленно отображает все передвижения товаров по складу, выполняет визирование сопроводительных документов, осуществляет контроль выполнения поставленных задач.
  • Предлагает широкую персонализацию контента для клиентов, а также маркетинговые инструменты для стимулирования спроса и повышения продаж.
  • Автоматически собирает отчетность для анализа без привлечения специалистов компании.

Таким образом, создание и запуск b2b-системы — это повод пересмотреть все процессы в компании, упросить их, алгоритмизировать и ускорить. Это обеспечит значительную экономию операционных затрат, обеспечит компании конкурентные преимущества на рынке и будет способствовать повышению продаж даже в период карантина.

Чтобы узнать больше о разработке и внедрении b2b-систем, достаточно перейти по ссылке.