Как преобразовать строки в списке Python: tolower и toUpper

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Преобразовать список строк в нижний или верхний регистр можно всего одним выражением:

Нижний регистр:

Python
Скопировать код
lowercase_list = [s.lower() for s in my_list]

Верхний регистр:

Python
Скопировать код
uppercase_list = [s.upper() for s in my_list]

Вместо my_list просто подставьте ваш исходный список строк.

Кинга Идем в IT: пошаговый план для смены профессии

Всё сразу: использование списочных включений и map

Рассмотрим, как применять списочные включения в Python, а также как сочетать функцию map() с lambda:

Python
Скопировать код
# Нижний регистр: использование map и lambda
lowercase_list_map = list(map(lambda s: s.lower(), my_list))

# Верхний регистр: использование map и метода str.upper
uppercase_list_map = list(map(str.upper, my_list))

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

Не все яйца в одну корзину: разные ситуации требуют разных подходов

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

1. Map или списочные включения?

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

2. Исходный список остается нетронутым

Вы хотите сохранить исходный список в исходном виде? Создайте его копию, прежде чем менять элементы:

Python
Скопировать код
original_list = ["Python", "LiSt", "LoWEr", "CASE", "UPPER"]
copied_list = original_list[:]
uppercase_copied = [s.upper() for s in copied_list]

3. Большие данных и производительность

При работе с большими объемами данных важно учитывать затраты памяти и производительность. Более выгодными могут быть генераторы и функция map(), поскольку они генерируют значения по мере необходимости:

Python
Скопировать код
# Генератор для экономии памяти
lowercase_generator = (s.lower() for s in my_list)

for word in lowercase_generator:
    print(word)

Визуализация

Представьте себе мир строк:

Markdown
Скопировать код
Они выглядят так:
["Python", "LiSt", "LoWEr", "CASE", "UPPER"]

Применяя методы .lower() или .upper() в Python, мы приводим их к единому облику:

Python
Скопировать код
# Все строки станут нижнего регистра
[word.lower() for word in words]

# Все строки перейдут в верхний регистр
[word.upper() for word in words]

Таким образом, наш список превращается в гармоничный хор:

Markdown
Скопировать код
Коллекция в нижнем регистре: [👕, 👕, 👕, 👕, 👕]
Коллекция в верхнем регистре: [🎩, 🎩, 🎩, 🎩, 🎩]

Тонкости и подводные камни: обработка исключительных случаев

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

Unicode строки и локализация

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

Python
Скопировать код
import unicodedata

# Правильное приведение Unicode строк к нижнему регистру
lowercase_unicode = [unicodedata.normalize('NFKD', s).encode('ASCII', 'ignore').decode().lower() for s in my_list]

Фильтрация нестроковых элементов

Если в списке есть не только строки, измените регистр только для строк:

Python
Скопировать код
# Меняем регистр только для строковых элементов, остальные не трогаем
uniform_case_list = [s.lower() if isinstance(s, str) else s for s in my_list]

Модификация списка на месте: рискованный манёвр

Если сохранение исходного списка не является приоритетом:

Python
Скопировать код
# Модификация исходного списка на месте, будьте осторожны
for i, s in enumerate(my_list):
    if isinstance(s, str):
        my_list[i] = s.lower()

Помните, что модификация на месте необратима и может привести к неожиданным последствиям.

Полезные материалы

  1. Built-in Types — Python 3.12.2 documentation for str.upper — документация к методу str.upper().
  2. Built-in Types — Python 3.12.2 documentation for str.lower — документация к методу str.lower().
  3. How do I lowercase a string in Python? – Stack Overflow — обсуждение решений на StackOverflow.
  4. Python String lower() Method – w3schools — гайд по методу lower().
  5. Strings and Character Data in Python – Real Python — полное руководство по работе со строками в Python.
  6. 5. Data Structures — Python 3.12.2 documentation — официальное руководство по списочным включениям.
  7. Tutorial | DigitalOcean — практическое руководство по преобразованию регистра списка строк.