Уникальные элементы строки python

Как посчитать уникальные символы в строке в Python

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

Считаем уникальные символы при помощи множества

Чтобы подсчитать количество уникальных символов в строке, сперва используйте функцию set() для преобразования строки во множество уникальных символов. Затем при помощи функции len() определите количество элементов множества.

my_str = 'bobby' result = len(set(my_str)) print(result) # 3

Функция set() принимает итерируемый объект и возвращает новый объект класса ‘set’ (т.е. множество) с элементами исходного объекта. Множество – это неупорядоченная коллекция уникальных элементов, поэтому преобразование строки во множество удаляет все повторы символов.

my_str = ‘bobby’ print(set(my_str)) # Вывод: #

Последний шаг – использование функции len() для получения общего количества элементов множества.

my_str = 'bobby' result = len(set(my_str)) print(result) # Вывод: # 3

Функция len() возвращает длину (количество элементов) объекта. Аргументом, который принимает функция, может быть последовательность (например, строка, кортеж или список) или коллекция (словарь, множество, замороженное множество).

Если вам нужно не посчитать уникальные символы в строке, а получить их, используйте вместо функции len() метод str.join() .

my_str = 'bobby' result = ''.join(set(my_str)) print(result) # Вывод: # byo

Метод str.join() принимает в качестве аргумента итерируемый объект и возвращает строку, которая является конкатенацией строк в итерируемом объекте. Строка, к которой обращается метод, используется в качестве разделителя между элементами.

Читайте также:  Php добавить строку перевод строки

Примечание редакции: подробнее о методе join() можно почитать в статье “Метод join() и объединение строк в Python”.

Считаем уникальные символы в строке с помощью dict.fromkeys()

При таком подходе сперва нужно создать из строки словарь при помощи метода dict.fromkeys() . Затем, используя функцию len() , можно получить количество элементов словаря.

my_str = 'bobby' result = len(dict.fromkeys(my_str)) print(result) # Вывод: # 3

Метод dict.fromkeys принимает итерируемый объект и значение и создает словарь. Ключами этого словаря будут элементы итерируемого объекта. Все ключи будут иметь одно значение – то, которое было передано dict.fromkeys() в качестве аргумента. Если значение не передано, по умолчанию используется None.

my_str = ‘bobby’ print(dict.fromkeys(my_str)) # Вывод: #

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

Если вам нужно не посчитать уникальные символы в строке, а получить их, используйте вместо функции len() метод str.join() .

my_str = 'bobby' result = ''.join(dict.fromkeys(my_str).keys()) print(result) # Вывод: # boy

При помощи метода dict.keys() мы получили ключи словаря, а при помощи str.join() объединили их в строку.

Начиная с Python 3.7 словари сохраняют порядок вставки ключей.

Подсчет уникальных символов с помощью цикла for

Чтобы посчитать уникальные символы в строке при помощи цикла for, нужно проделать следующие шаги:

  1. Объявите новую переменную, которая будет хранить пустой список.
  2. Используйте цикл for для итерации по строке.
  3. Используйте метод list.append() для добавления всех уникальных символов в список.
  4. Используйте функцию len() для получения длины списка.
my_str = 'bobby' unique_chars = [] for char in my_str: if char not in unique_chars: unique_chars.append(char) print(len(unique_chars)) # 3 print(unique_chars) # ['b', 'o', 'y']

Мы использовали цикл for для перебора символов строки. На каждой итерации мы используем оператор not in , чтобы проверить, нет ли символа в списке. Если такого символа в списке нет, мы добавляем его в конец списка при помощи метода list.append() .

Примечание редакции: познакомиться с оператором not in можно в статье “Операторы in и not in в Python”.

my_list = ['bobby', 'hadz'] my_list.append('com') print(my_list) # Вывод: # ['bobby', 'hadz', 'com']

Последний шаг – использование функции len() для получения длины списка уникальных символов.

Источник

Как получить уникальные элементы списка python

Предположим, есть список, который содержит повторяющиеся числа:

Но нужен список с уникальными числами:

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

Вариант №1. Использование множества (set) для получения элементов

Использование множества ( set ) — один из вариантов. Он удобен тем, что включает только уникальные элементы. После этого множество можно обратно превратить в список.

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

 
numbers = [1, 2, 2, 3, 3, 4, 5]

def get_unique_numbers(numbers):
list_of_unique_numbers = []
unique_numbers = set(numbers)

for number in unique_numbers:
list_of_unique_numbers.append(number)

return list_of_unique_numbers

print(get_unique_numbers(numbers))

Разберем, что происходит на каждом этапе. Есть список чисел numbers . Передаем его в функцию get_unique_numbers .

Внутри этой функции создается пустой список, который в итоге будет включать все уникальные числа. После этого используется set для получения уникальных чисел из списка numbers .

 
unique_numbers = set(numbers)

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

 
for number in unique_numbers:
list_of_unique_numbers.append(number)

На каждой итерации текущее число добавляется в список list_of_unique_numbers . Наконец, именно этот список возвращается в конце программы.

Есть и более короткий способ использования множества для получения уникальных значений в Python. О нем и пойдет речь дальше.

Короткий вариант с set

Весь код выше можно сжать в одну строку с помощью встроенных в Python функций.

 
numbers = [1, 2, 2, 3, 3, 4, 5]
unique_numbers = list(set(numbers))
print(unique_numbers)

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

 
unique_numbers = list(set(numbers))

Проще всего думать «изнутри наружу» при чтении этого кода. Самый вложенный код выполняется первым: set(numbers) . Затем — внешний блок: list(set(numbers)) .

Вариант №2. Использование цикла for

Также стоит рассмотреть подход с использованием цикла.

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

Рассмотрим два способа использования цикла. Начнем с более подробного.

 
numbers = [20, 20, 30, 30, 40]

def get_unique_numbers(numbers):
unique = []

for number in numbers:
if number in unique:
continue
else:
unique.append(number)
return unique

print(get_unique_numbers(numbers))

Вот что происходит на каждом этапе. Сначала есть список чисел numbers . Он передается в функцию get_unique_numbers .

Внутри этой функции создается пустой список unique . В итоге он будет включать все уникальные значения.

Цикл будет использоваться для перебора по числам в списке numbers .

 
for number in numbers:
if number in unique:
continue
else:
unique.append(number)

Условные конструкции в цикле проверяют, есть ли число текущей итерации в списке unique . Если да, то цикл переходит на следующую итерации. Если нет — число добавляется в список.

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

Короткий способ с циклом

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

 
numbers = [20, 20, 30, 30, 40]

def get_unique_numbers(numbers):
unique = []
for number in numbers:
if number not in unique:
unique.append(number)
return unique

Разница в условной конструкции. В этот раз она следующая — если числа нет в unique , то его нужно добавить.

 
if number not in unique:
unique.append(number)

В противном случае цикл перейдет к следующему числу в списке numbers .

Результат будет тот же. Но иногда подобное читать сложнее, когда булево значение опускается.

Есть еще несколько способов поиска уникальных значений в списке Python. Но достаточно будет тех, которые описаны в этой статье.

Обучение с трудоустройством

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

Python Q CEO Pythonru admin@pythonru.com https://secure.gravatar.com/avatar/b16f253879f7349f64830c64d1da4415?s=96&d=mm&r=g CEO Pythonru Python Александр Редактор https://t.me/cashncarryhttps://pythonru.com/https://yandex.ru/q/profile/cashnc/ PythonRu.com admin@pythonru.com Alex Zabrodin 2018-10-26 Online Python, Programming, HTML, CSS, JavaScript

Источник

Оцените статью