Архив рубрики: Публикации

Как получить и изменить текущий рабочий каталог в Python

При работе с файлами в каталогах в Python всегда рекомендуется использовать абсолютные пути. Однако, если вы работаете с относительными путями, вам необходимо понимать концепцию текущего рабочего каталога и то, как найти или изменить текущий рабочий каталог. Абсолютный путь указывает расположение файла или каталога, начиная с корневого каталога, а относительный путь начинается с текущего рабочего каталога.

Когда вы запускаете сценарий Python, в качестве текущего рабочего каталога устанавливается каталог, из которого выполняется сценарий.

Модуль os python обеспечивает переносимый способ взаимодействия с операционной системой. Модуль является частью стандартной библиотеки Python и включает методы поиска и изменения текущего рабочего каталога.

Получение текущего рабочего каталога в Python

Метод getcwd() модуля os в Python возвращает строку, содержащую абсолютный путь к текущему рабочему каталогу. Возвращенная строка не включает завершающий символ косой черты.

os.getcwd()

Чтобы использовать методы модуля os, вы должны импортировать модуль в верхней части файла.

Ниже приведен пример, показывающий, как распечатать текущий рабочий каталог:

# Import the os module
import os

# Get the current working directory
cwd = os.getcwd()

# Print the current working directory
print("Current working directory: {0}".format(cwd))

# Print the type of the returned object
print("os.getcwd() returns an object of type: {0}".format(type(cwd)))

Результат будет выглядеть примерно так:

Current working directory: /home/linuxize/Desktop
os.getcwd() returns an object of type: <class 'str'>

Если вы хотите найти каталог, в котором находится скрипт, используйте os.path.realpath(__file__) . Он вернет строку, содержащую абсолютный путь к запущенному скрипту.

Изменение текущего рабочего каталога в Python

Чтобы изменить текущий рабочий каталог в Python, используйте метод chdir() .

os.getcwd(path)

Метод принимает один аргумент — путь к каталогу, в который вы хотите перейти. Аргумент path может быть абсолютным или относительным.

Вот пример:

# Import the os module
import os

# Print the current working directory
print("Current working directory: {0}".format(os.getcwd()))

# Change the current working directory
os.chdir('/tmp')

# Print the current working directory
print("Current working directory: {0}".format(os.getcwd()))

Результат будет выглядеть примерно так:

Current working directory: /home/linuxize/Desktop
Current working directory: /tmp

Аргумент, передаваемый методу chdir() должен быть каталогом, в противном случае NotADirectoryError исключение NotADirectoryError . Если указанный каталог не существует, возникает исключение FileNotFoundError . Если у пользователя, от имени которого выполняется сценарий, нет необходимых разрешений, возникает исключение PermissionError .

# Import the os module
import os

path = '/var/www'

try:
    os.chdir(path)
    print("Current working directory: {0}".format(os.getcwd()))
except FileNotFoundError:
    print("Directory: {0} does not exist".format(path))
except NotADirectoryError:
    print("{0} is not a directory".format(path))
except PermissionError:
    print("You do not have permissions to change to {0}".format(path))

Выводы

Чтобы найти текущий рабочий каталог в Python, используйте os.getcwd() , а для изменения текущего рабочего каталога используйте os.chdir(path) .

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



2020-10-16T08:24:27
Python

Установите и используйте Hex-редактор в Kali Linux 2020

Эта статья даст вам обзор некоторых из лучших Hex-редакторов для Kali Linux. Прежде чем обсуждать лучших редакторов, давайте сначала посмотрим, что означает термин «Hex Editor».

Hex Editor — это программа, которую вы можете использовать для редактирования шестнадцатеричных значений данных. Проще говоря, файл, сохраненный на любом устройстве, можно редактировать, будь то изображение, видео или программное обеспечение. Hex Editing — это простейшая форма взлома игры, которая не полагается на чит-коды или что-то в этом роде. Вместо этого это метод взлома однопользовательской игры. Существуют похожие методы взлома для многопользовательской игры, которые обычно включают редактирование ресурсов. Единственные инструменты, которые нам понадобятся в этом случае, — это калькулятор Windows и HxD Hex Editor.

 

Где используется Hex Editor

Каждая часть данных хранится в виде десятичных знаков. Части данных можно легко редактировать с помощью Hex Editor. Это программное обеспечение в основном используют программисты или инженеры-программисты. Он используется для определения типа файла, который не поддерживается Adobe, игр и взлома файлов, отладки и редактирования.

Ниже перечислены некоторые из лучших Hex-редакторов, которые можно использовать в Kali Linux.

 

Редактор Xxd Hex

Вы когда-нибудь хотели преобразовать двоичный файл в командную строку? Что ж, есть простой способ создать шестнадцатеричный дамп файла с помощью команды Xxd в Linux. Данные, просматриваемые в шестнадцатеричной форме, известны как шестнадцатеричный дамп. Вы можете использовать шестнадцатеричный код при отладке программы или для обратного проектирования программы. Итак, команда Xxd очень полезна, если вы имеете дело с двоичным содержимым, если вы хотите просмотреть некоторые двоичные файлы или выполнить обратную разработку.

 

Редактор HexEdit Hex

Еще один шестнадцатеричный редактор, используемый для редактирования двоичных данных, — это шестнадцатеричный редактор HexEdit. В отличие от Xxd Hex Editor, HexEdit также показывает ASCII (числовое кодирование) форму файла. В основном этот редактор используется для современных операционных систем, включая Linux и Windows.

 

Hexyl Hex Editor

К разным категориям байтов относятся ASCII, не-ASCII, байты NULL, пробелы ASCII и т. Д. Для удобства эти категории различаются разными цветами. Hexyl Hex Editor — это инструмент, который дает возможность различать разные байты, указывая их разными цветами. Hexyl также дает информацию о количестве байтов и их текстовом представлении. Редактор Hexyl Hex имеет некоторые ограничения. Процесс установки Hexyl Hex Editor зависит от ОС. Итак, прежде чем переходить к этому Hex Editor, вы должны сначала проверить процесс установки вашей ОС.

 

Редактор GHex-GNOME Hex

GHex доступен для вашей системы Linux. В программах есть множество шестнадцатеричных редакторов, которые можно использовать для отображения шестнадцатеричных данных. Ghex — достойный вариант, поскольку он автоматически преобразует двоичное значение в десятичное, восьмеричное или шестнадцатеричное значение. Он также находит искомое смещение и считает его. Все, что вам нужно сделать, это просто выбрать байты, и, в конце концов, GHex выполнит преобразование автоматически, что может быть полезно для многих людей.

 

Редактор Blex Hex

Blex Hex Editor — один из самых продвинутых Hex-редакторов, очень похожий на предыдущий редактор, перечисленный выше. Вы можете редактировать данные больших файлов с помощью Bless Hex Editor. Это очень мощный инструмент, который можно использовать для поиска самого себя. Вы можете легко восстановить данные, написанные на PHP. Bless Hex Editor имеет расширенную функцию редактирования данных и может эффективно отменять инструкции.

 

Редактор Oketta

Каждый Hex Editor имеет особые особенности, которые делают его уникальным. Oketta Hex Editor хорошо известен тем, что открывает несколько удаленных файлов по HTTP и FTP. Это один из самых простых шестнадцатеричных редакторов для редактирования или просмотра шестнадцатеричных данных.

 

Редактор WxhexEditor

Еще один продвинутый шестнадцатеричный редактор для редактирования данных — это WxhexEditor. Этот шестнадцатеричный редактор лучше всего подходит для файлов на больших устройствах. WxhexEditor может работать на различных платформах, включая Windows, Linux, Mac и BSD. Одна из лучших передовых функций Wxhexeditor — это более низкое потребление памяти и более высокая скорость работы. Он также может исправлять ошибки, что делает версию снова пригодной для использования в случае ошибок.

 

Редактор Hexcurse-Console Hex

Hex-редактор Hexcurse-Console — один из самых популярных Hex-редакторов для Kali Linux. Вы можете легко открывать файлы и редактировать данные с помощью этого инструмента. Вы также можете переключаться между форматами HEX и ASCII с помощью Hexcurse.

 

Двоичный редактор Hexer

Hexer Binary Hex Editor — это многобуферный редактор с удивительными функциями, включая редактирование нескольких файлов и многоуровневую отмену для двоичных регулярных выражений. Двоичный редактор Hexer отличается от других редакторов тем, что это редактор в стиле Vi.

 

Установка HexEdit в Kali Linux

Вы можете установить HexEdit Hex Editor в системе Ubuntu с помощью терминала. Во-первых, вам нужно будет открыть браузер и загрузить установочный файл HexEdit для Linux. Вы можете создать новый словарь для переноса файла установщика, но этот шаг не является обязательным, так как установщик предложит вам сделать это во время установки.

Откройте терминал и выполните следующие действия, чтобы установить HexEdit в Kali Linux.

Сначала перейдите к словарю, в котором вы сохранили файл установщика.

$ sudo leafpad /etc/apt/sources.list

 

Второй шаг — добавить еще один источник.

$ deb http://mirror.nus.edu.sg/kali/kali kali main

 

Пакет HexEdit готов к установке.

$ sudo apt-get update && apt-get install hexedit

 

Поскольку вы запускаете HexEdit в первый раз, он запускается с помощью автоматического запроса, выдаваемого системой. Теперь вы можете легко использовать HexEdit в руководстве Kali Linux.

 

Вывод

Вышеупомянутая статья включала краткое описание всех шестнадцатеричных редакторов, которые лучше всего использовать в Kali Linux. Вы можете выбрать любой шестнадцатеричный редактор из списка выше после просмотра инструкций и требований вашей ОС.



2020-10-15T10:02:03
Kali Linux

Как обновить вашу систему Kali Linux

В этой статье содержится краткое руководство по обновлению вашей системы Kali Linux. Kali Linux — это дистрибутив Linux на основе Debian, который поставляется с множеством уникальных и оптимизированных утилит, направленных на повышение точности, скорости и легкости тестирования на проникновение. На первый взгляд Kali похожа на любую другую ОС: она воспроизводит аудио и текстовые файлы, поддерживает все программы, поддерживаемые Windows и macOS, а вы даже можете. доступ в Интернет с его помощью. В отличие от других операционных систем, Kali имеет большой набор испытанных и протестированных предустановленных приложений, что делает ее более чем простой ОС.

Kali была выпущена в 2013 году как полный ребрендинг BackTrack Linux с интерфейсом GNOME. Разработчики избавились от BackTrack, удалив его некачественные утилиты и обновив те, которые были одобрены сообществом whitehat.

Kali OS включает в себя в общей сложности более 600 инструментов, полностью бесплатна и имеет общедоступное дерево Git с открытым исходным кодом. Kali Linux настолько хорошо известен среди профессионалов в области кибербезопасности, что его название практически стало синонимом пен-тестирования.

 

Поддерживает

Kali Linux поддерживает широкий спектр ARM, в том числе:

  • Одноплатные системы, такие как Raspberry Pi и BeagleBone Black
  • Бортовые компьютеры Beagle
  • Chromebook ARM от Samsung
  • И многие другие платформы

 

Обновление Kali Linux

Следующие разделы покажут вам пошаговый процесс обновления вашей системы Kali Linux.

 

1. Настройте репозитории Kali Linux.

Во-первых, поищите репозитории Kali, так как вы должны сначала настроить их перед обновлением. Дважды проверьте, что ваш файл sources.list в /etc/apt/sources.list содержит все соответствующие репозитории Kali, в том числе следующее:

b https://http.kali.org/kali kali-rolling main non-free contrib



deb-sources https://http.kali.org/kali kali-rolling main non-free contrib

 

Обязательно используйте только официальные репозитории Kali, так как использование внешних неофициальных репозиториев может поставить под угрозу системную безопасность хоста. Использование репозиториев, отличных от тех, которые были официально выпущены командой Kali, может нанести вред вашей системе.

 

2. Начать обновление

Вам сначала нужно будет обновить список индексов пакетов, прежде чем вы сможете обновить систему Kali Linux. Для этого введите в командный терминал следующий синтаксис:

$ sudo apt update

 

Затем проверьте наличие выпущенных обновлений, введя следующую команду:

$ apt list --upgradable

 

Введите следующую команду для индивидуального обновления каждого пакета:

$ apt install PACKAGE-NAME

 

Или введите команду ниже, чтобы обновить все пакеты одновременно:

$ sudo apt upgrade

 

Подождите, пока обновления загрузятся и полностью установятся. Это займет некоторое время; сколько времени зависит от характеристик вашей системы.

Установка обновлений завершена, но мы еще не закончили!

 

3. Обновите отложенные пакеты

Возможно, вы на самом деле не обновили все пакеты, поскольку не все из них перечислены. Эта проблема, вероятно, связана с проблемами зависимости пакета или может иметь другие проблемы, связанные с этим.

Тем не менее, вы можете проверить, есть ли какие-либо недостатки в загруженных вами обновлениях, введя в терминал следующую команду:

$ sudo apt upgrade

 

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

$ sudo apt install PACKAGE-NAME

 

Или вы можете ввести команду ниже, чтобы загрузить все пакеты сразу:

$ sudo apt dist-upgrade

 

4. Удалите устаревшие пакеты.

Чтобы удалить устаревшие пакеты в вашей системе, используйте следующую команду:

$ sudo apt autoremove

 

Вывод

Короче говоря, для оптимального обновления вашей системы Kali все, что вам нужно сделать, это просто настроить репозитории и установить обновления с помощью команды:

$ sudo apt upgrade

 

Это так просто.

Помните, что вы должны быть внимательны при использовании сторонних репозиториев. Это потенциально может сломать вашу систему Kali, и в этом случае вам придется установить Kali заново. Кроме того, не забудьте освободить место на жестком диске, удалив все устаревшие пакеты.



2020-10-14T20:12:25
Kali Linux

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

Удаленное включение протестировано на компьютерах с операционными системами Windows 7, Windows 8, Windows 10 и так же на Windows Server 2012, 2019. Это основные ОС в локальной сети нашей организации в настоящее время. Компьютеры включены в общую сеть через коммутаторы без дополнительной маршрутизации.

Для запуска компьютера через подключение по локальной сети необходимо:

— выполнить настройки в BIOS удаленного компьютера;

— выполнить настройки в ОС удаленного компьютера;

— установить и запустить ПО на компьютере с которого происходит удаленный запуск.

После этих действий проведем удаленное подключение к включенному ПК через AnyDesk.

Настройка BIOS.

Для входа в BIOS включаем компьютер и жмем на клавиатуре определенную клавишу, какую именно зависит от производителя материнской платы. Чаще всего это кнопка [DELETE] или [F1], но также встречаются многие другие кнопки и сочетания.

Попав в BIOS активируем настройку Power On LAN (Wake-on-LAN, WOL). В разных биосах она называется поразному. Выставляем значение настройки – Enabled.

Ниже на фото несколько примеров.

PME Event Wake Up (PME — Power Management Event)

 

S4/S5 Wake on LAN

 

Wake on LAN

 

Включение питания устройства PCIE.

 

Power On By PCI Device.

 

Включение посредством PCI-E.

 

Чаще всего эти настройки располагаются в разделе Power или Power Management. Так же они могут быть в разделе расширенных или дополнительных настроек.

В BIOS сервера Supermicro настройки Wake-On-Lan не оказалось. Видимо разработчики решили, что сервер должен быть включен круглосуточно. Так оно и есть. В данном случае активируем настройку Restore on AC Power Loss >> Power On. При возобновлении питания 220В сервер включится автоматически.

После активации настройки сохраняем параметры BIOS и компьютер перезагрузится.

Настройки в операционной системе.

В ОС Windows 7, 8, 10 и WinServer 2012, 2019 настройки сети выполняются одинаково. Любым удобным способом попадаем к свойствам сетевого адаптера через который ПК подключен в локальную сеть и интернет. Например, переходим в:

Панель управленияСеть и ИнтернетЦентр управления сетями и общим доступом

(можно скопировать эту строку, открыть Этот Компьютер и вставить в адресную строку, нажать Ввод)

Находим нужный адаптер и открываем его свойства.

 

Или открываем «Диспетчер устройств» и находим там сетевой адаптер.  Затем открываем правой кнопкой мыши его свойства.

 

В раскрывшихся свойствах нажимаем кнопку «Настроить».

 

В настройках переходим на вкладку «Дополнительно» и активируем два пункта, как на картинке ниже.

 

В зависимости от драйвера сетевого адаптера эти настройки могут называться по разному,  например «Пробуждение особым пакетом Magic» или «WOL Пакет Magic». 

Нажимаем ОК.

Переходим на вкладку «Управление электропитанием». Активируем галочкой пункт «Разрешить этому устройству выводить компьютер из ждущего режима». Можно так же активировать самый нижний пункт настроек, но необязательно. Нажимаем кнопку «ОК».

 

Выполним еще одну настройку, без которой ничего не заработает в Windows 10. Переходим в:

Панель управленияОборудование и звукЭлектропитаниеСистемные параметры. В разделе «Действия при нажатии кнопок» убираем галочку с настройки «Включить быстрый запуск (рекомендуется). Нажимаем кнопку «Сохранить изменения».

 

Если ОС установлена на HDD, а не на SSD, то время загрузки после включения компьютера ощутимо увеличится.

 

Удаленное включение ПК.

На удаленном компьютере в той же локальной сети устанавливаем небольшое приложение WakeMeOnLan. Скачать его можно бесплатно перейдя на ЭТОТ сайт (скачивание внизу страницы).

 

ПО сканирует сеть, сохраняет MAC, IP, имя ПК. Затем, когда компьютер выключен, его нужно выбрать из списка и нажать на кнопку с будильником в верхней левой части окна программы. В настройках можно выбрать, куда будет отправлен пакет (на широковещательный адрес, на IP компьютера или на его имя).

Управляемый компьютер находится в дежурном режиме (англ. stand-by — режим, предусмотренный спецификацией ATX, при котором из всех выходных цепей блока питания активна только дежурная +5VSB) и выдаёт питание на микросхему BIOS и сетевой адаптер. Сетевой адаптер находится в режиме пониженного энергопотребления, при этом его микроконтроллер анализирует все пакеты, приходящие на соответствующий MAC-адрес, ничего не отвечая на них. Если одним из пакетов окажется magic packet, сетевой адаптер выдаст сигнал на включение питания компьютера (вики).

Если компьютер выключали на ночь из розетки электропитания, то по LAN он не запустится. Если включить всетаки нужно удаленно, то можно скомбинировать процесс с функцией «Включение при возобновлении электропитания», которая так же активируется в BIOS.

Некоторые протестированные в нашей ЛВС компьютеры с Windows 7 запускаются только с PCI внешним сетевым адаптором. При подключении на встроенный в мат.плату сетевой адаптор стабильно выходят из состояния сна. Какие настройки на это влияют так и не определилось. В Windows 10 при отключении быстрого запуска удаленное включение работает стабильно.

 

Удаленное администрирование.

После запуска «Wake-On-LAN» удаленного компьютера к нему можно подключится любым доступным способом и выполнить требуемые настройки. В нашей ЛВС популярно удаленное подключение к рабочему столу RDP и AnyDesk. AnyDesk способен включать удаленный компьютер не только по локальной сети но и через через интернет. Рассмотрим кратко как это сделать.

Устанавливаем и обновляем AnyDesk на удаленном компьютере. Скачать его можно бесплатно с официального сайта. Использование тоже бесплатное, с некоторыми ограничениями в отличие от платной версии. Запуск установленной программы желательно выполнять с правами администратора. Галочка об этом ставится в свойствах ярлыка.

Переходим в настройки. В боковом меню находим пункт «Wake-On-LAN» и проверяем, чтоб он был активирован (Enabled).

 

В пункте настроек «Безопасность» желательно установить пароль, чтоб подключатся автоматически.

Выключаем компьютер через Пуск >> Завершение работы.

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

Запускаем AnyDesk.

Вводим ID удаленного рабочего места.

 

После того, как появится сообщение «Клиент не в сети», нажимаем кнопку «Питание вкл.».

 

Начнется соединение с попыткой включения. Необходимо ждать 3-4 минуты если соединение проходит через интернет. К тому же время зависит от параметров и скорости включения удаленного ПК.

 

После некоторого времени ожидания появится окно для авторизации. Вводим созданный пароль. Отмечаем галочкой «Входить автоматически».

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

 

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



2020-10-14T16:11:59
Настройка ПО

Как получить и изменить текущий рабочий каталог в Python

При работе с файлами в каталогах в Python всегда рекомендуется использовать абсолютные пути. Однако, если вы работаете с относительными путями, вам необходимо понимать концепцию текущего рабочего каталога и то, как найти или изменить текущий рабочий каталог. Абсолютный путь указывает расположение файла или каталога, начиная с корневого каталога, а относительный путь начинается с текущего рабочего каталога.

Когда вы запускаете сценарий Python, в качестве текущего рабочего каталога устанавливается каталог, из которого выполняется сценарий.

Модуль os python обеспечивает переносимый способ взаимодействия с операционной системой. Модуль является частью стандартной библиотеки Python и включает методы поиска и изменения текущего рабочего каталога.

 

Получение текущего рабочего каталога в Python

Метод  getcwd() модуля os в Python, возвращает строку, содержащую абсолютный путь к текущему рабочему каталогу. Возвращенная строка не включает завершающий символ косой черты.

os.getcwd()


Чтобы использовать методы модуля os, вы должны импортировать модуль в верхней части файла.

Ниже приведен пример, показывающий, как распечатать текущий рабочий каталог:

# Импорт модуля os

import os



# Получить текущий рабочий каталог

cwd = os.getcwd()



# Печать текущего рабочего каталога

print("Текущий рабочий каталог: {0}".format(cwd))



# Выведите тип возвращаемого объекта

print("os.getcwd() возвращает объект типа: {0}".format(type(cwd)))


Результат будет выглядеть примерно так:

Текущий рабочий каталог: /home/AndreyEx/Desktop

os.getcwd() возвращает объект типа: <class 'str'>


Если вы хотите найти каталог, в котором находится сценарий, используйте os.path.realpath(__file__). Он вернет строку, содержащую абсолютный путь к запущенному скрипту.

Изменение текущего рабочего каталога в Python

Чтобы изменить текущий рабочий каталог в Python, используйте метод chdir().

os.getcwd(path)


Метод принимает один аргумент — путь к каталогу, в который вы хотите перейти. Аргумент path может быть абсолютным или относительным.

Вот пример:

# Импорт модуля os

import os



# Печать текущего рабочего каталога

print("Текущий рабочий каталог: {0}".format(os.getcwd()))



# Изменение текущего рабочего каталога

os.chdir('/tmp')



# Печать текущего рабочего каталога

print("Текущий рабочий каталог: {0}".format(os.getcwd()))


Результат будет выглядеть примерно так:

Текущий рабочий каталог: /home/Andreyex/Desktop

Текущий рабочий каталог: /tmp


 

Аргумент, предоставленный методу chdir(), должен быть каталогом, в противном случае возникает исключение NotADirectoryError. Если указанный каталог не существует, возникает исключение FileNotFoundError. Если у пользователя, под которым выполняется сценарий, нет необходимых разрешений, возникает исключение PermissionError.

# Импорт модуля os

import os



path = '/var/www'



try:

    os.chdir(path)

    print("Текущий рабочий каталог: {0}".format(os.getcwd()))

except FileNotFoundError:

    print("Каталог: {0} не существует".format(path))

except NotADirectoryError:

    print("{0} не каталог".format(path))

except PermissionError:

    print("У вас нет прав на изменение {0}".format(path))


Вывод

Чтобы найти текущий рабочий каталог в Python, используйте os.getcwd(), а для изменения текущего рабочего каталога используйте os.chdir(path).

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



2020-10-14T12:11:50
Python

Списки Python

Python включает ряд последовательных типов данных, которые позволяют хранить коллекции данных организованным и эффективным способом. Основные типы последовательностей — это списки, кортежи и объекты диапазона.

В этой статье рассматриваются списки Python. Мы покажем вам, как создать список, разрезать и отсортировать список, добавить или удалить элементы из списка и т. Д.

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

Создание списка

Списки обычно создаются путем помещения элементов в квадратные скобки [] , разделенных запятыми. В них может быть любое количество предметов, которые могут быть разных типов. Вот пример:

L = ['orange', 'white', 'green']

Квадратные скобки без элементов между ними обозначают пустой список:

L = []

Хотя списки Python обычно однородны, у вас могут быть элементы со смешанными типами данных:

L = [1, 'white', 6.5]

Вы также можете объявить вложенные списки, в которых один или несколько элементов также являются списками:

L = [1, 2, ['red', 'blue']]

Несколько элементов могут иметь одно и то же значение:

L = [1, 2, 3, 2, 2, 1]

Списки также могут быть построены с использованием понимания list() конструктора list() и других встроенных функций, таких как sorted() .

Доступ к элементам списка

На элемент списка можно ссылаться по его индексу. Индексы являются целыми числами и начинаются от 0 до n-1 где n — количество элементов:

L = ["a", "b", "c", "d"]
      0    1    2    3

В Python индексы заключаются в квадратные скобки:

L[index]

Например, для доступа ко второму элементу списка вы должны использовать:

colors = ['orange', 'white', 'green']colors[1]

'white'

Если вы ссылаетесь на несуществующий индекс, IndexError исключение IndexError :

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

Для доступа к элементам во вложенном списке используйте несколько индексов:

L = [1, 2, ["red", "blue"]]L[2][1]

'blue'

Python также позволяет вам получать доступ к элементам списка, используя отрицательные индексы. Последний элемент обозначается как -1 , второй последний элемент — как -2 и так далее:

L = ["a", "b", "c", "d"]
     -4   -3   -2   -1

Например, чтобы получить доступ ко второму элементу с конца, вы должны использовать:

colors = ['orange', 'white', 'green']colors[-2]

'white'

Нарезка списка

В Python вы можете разрезать список, используя следующую форму:

L[start:stop:step]

  • Первый аргумент указывает индекс, с которого начинается извлечение. Когда используется отрицательный индекс, он указывает смещение от конца списка. Если этот аргумент опущен, нарезка начинается с индекса 0.
  • Второй аргумент указывает индекс, до которого следует завершить извлечение; результат не включает элемент «стоп». Когда используется отрицательный индекс, он указывает смещение от конца списка. Если этот аргумент опущен или превышает длину списка, нарезка переходит в конец списка.
  • Третий аргумент является необязательным и указывает шаг нарезки. Когда аргумент «шаг» не используется, по умолчанию он равен 1. Когда используется отрицательное значение, срез принимает элементы в обратном порядке.

Результатом нарезки списка является новый список, содержащий извлеченные элементы, а исходный список не изменяется.

Все следующее является допустимым синтаксисом Python:

L[:] # copy whole list
L[start:] # slice the list starting from the element with index "start" to the end of the list.
L[:stop] # slice the list starting from the begging up to but not including the element with index "stop".
L[start:stop] #  slice the list starting from the element with index "start" up to but not including the element with index "stop".
stop"
L[::step] #  slice the list with a stride of "step"

Ниже приведен базовый пример того, как разрезать список, начиная с элемента с индексом 1 и заканчивая элементом с индексом 4, но не включая его:

fruits = ['Apple', 'Peach', 'Lemon', 'Strawberry', 'Grape']fruits[1:4]

['Peach', 'Lemon', 'Strawberry']

Обновление значения элемента

Чтобы изменить значение определенного элемента в списке, обратитесь к его порядковому номеру:

L[index] = value

Вот пример, показывающий, как обновить значение последнего элемента списка:

colors = ['orange', 'white', 'green']colors[-1] = "blue"print(colors)

['orange', 'white', 'blue']

Если элемент с данным индексом существует, значение обновляется. В противном случае IndexError исключение IndexError :

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range

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

colors = ['orange', 'white', 'green']colors[1:3] = ['red']print(colors)

['orange', 'red']

Замещающий блок может иметь меньшее, большее или такое же количество элементов, как и список. Это позволяет расширять или сжимать список.

Добавление элементов в список

Тип данных списка имеет два метода, которые позволяют добавлять элементы в список : append() и insert() .

Метод append() добавляет элемент в конец списка. Синтаксис метода append() следующий:

L.append(element)

«Element» — это элемент, который нужно добавить в список. Это может быть любой тип данных, включая список. Вот пример:

colors = ['orange', 'white', 'green']colors.append('red')print(colors)

['orange', 'white', 'green', 'red']

Метод insert() рекламирует элемент в определенной позиции в списке и имеет следующий синтаксис:

L.insert(index, element)

«Index» — это позиция, в которую вы хотите вставить элемент, а «element» — это элемент, который нужно добавить в список. В следующем примере показано, как добавить элемент в список на первой позиции:

colors = ['orange', 'white', 'green']colors.insert(0, 'red')print(colors)

['red', 'orange', 'white', 'green']

Метод extend() позволяет расширить список несколькими элементами. Он принимает единственный аргумент и имеет следующий синтаксис:

L.extend(list)

Элементы «списка» добавляются в конец «L». Вот пример:

colors = ['orange', 'white', 'green']colors.extend(['blue', 'black'])print(colors)

['orange', 'white', 'green', 'blue', 'black']

Удаление элементов из списка

Метод remove() принимает один аргумент и удаляет из списка первый элемент со значением, соответствующим аргументу:

L.remove(element)

colors = ['orange', 'white', 'orange', 'green']colors.remove('orange')print(colors)

['white', 'orange', 'green']

Если элемент с данным значением не существует, возникает исключение ValueError :

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list

Метод pop() принимает один аргумент и удаляет элемент с индексом, соответствующим аргументу, из списка:

L.pop(element)

Аргумент является необязательным. По умолчанию используется значение «-1», которое является последним элементом списка. Возвращаемое значение метода — удаленный элемент. Вот пример:

colors = ['orange', 'white', 'green']colors.pop(1)print(colors)

'white'
['orange', 'green']

Ключевое слово del в сочетании с обозначением среза позволяет удалить более одного элемента. Например, чтобы удалить первые два элемента из списка, вы должны использовать следующее:

colors = ['orange', 'white', 'orange', 'green']del colors[0:2]print(colors)

['orange', 'green']

Чтобы удалить все элементы, используйте метод clear() , который очищает список и не принимает никаких аргументов:

colors = ['orange', 'white', 'green']colors.clear()print(colors)

[]

Найдите длину списка

Встроенная функция len() возвращает общее количество элементов объекта.

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

len(L)

Вот пример:

colors = ['orange', 'white', 'green']num = len(colors)print(num)

3

Итерация по списку

Чтобы перебрать все элементы в списке, используйте цикл for :

colors = ['orange', 'white', 'green']for color in colors:    print(color)

orange
white
green

Если вам нужны индексы, в вашем распоряжении несколько методов. Наиболее распространенные способы — комбинировать функции range() и len() или использовать встроенную функцию enumerate() .

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

colors = ['orange', 'white', 'green']for i in range(len(colors)):  print("Index {} : Value {}".format(i, colors[i]))

Index 0 : Value orange
Index 1 : Value white
Index 2 : Value green

Вместо использования шаблона range(len(...)) вы можете использовать функцию enumerate() для enumerate() списка более питоническим способом:

colors = ['orange', 'white', 'green']for index, value in enumerate(colors):   print("Index {} : Value {}".format(index, value))

Index 0 : Value orange
Index 1 : Value white
Index 2 : Value green

Проверить, существует ли элемент

Чтобы проверить, существует ли элемент в списке, вы можете использовать операторы in и not in :

colors = ['orange', 'white', 'green']print('orange' in colors)

Результатом будет True или False :

True

Вот еще один пример с использованием оператора if :

colors = ['orange', 'white', 'green']if 'blue' not in colors:    print('no')else:    print('yes')

Результатом будет True или False :

no

Списки Python

Объекты списка принимают следующие методы:

  • append(x) — добавляет элемент в конец списка.
  • clear() — удаляет все элементы из списка.
  • copy() — возвращает частичную копию списка.
  • count(x) — возвращает количество раз, когда «x» появляется в списке.
  • extend(iterable) — добавляет «итерабельность» в конец списка.
  • index(x) — возвращает позицию первого вхождения элемента со значением ‘x’.
  • insert(i, x) — добавляет элемент в заданную позицию.
  • pop(i) — удаляет элемент из заданной позиции.
  • remove() — удаляет элемент с заданным значением.
  • reverse()переворачивает элементы списка .
  • sort()sort() элементы списка.

Выводы

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

Тип данных списка включает ряд полезных методов.

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



2020-10-13T18:22:42
Python