Skip to content

Instantly share code, notes, and snippets.

@jigi-33
Created May 25, 2020 14:28
Show Gist options
  • Save jigi-33/594977c4cac563b9c4a005605f0bf0e5 to your computer and use it in GitHub Desktop.
Save jigi-33/594977c4cac563b9c4a005605f0bf0e5 to your computer and use it in GitHub Desktop.
Основные типы данных (словари, кортежи, списки). Простое шифрование строк
"""
ЗАДАЧИ ПО ПРОСТЫМ ТИПАМ ДАННЫХ И ЗАПРОСАМ К ОБЪЕКТАМ
====================================================
"""
# Получить список всех аттрибутов объекта
attrs = dir(A)
# Получить список всех публичных аттрибутов объекта
public_attr = [attr for attr in dir(A) if not attr.startswith('_') ]
# Получить список методов объекта
methods = [attr for attr in dir(A) if callable(getattr(A, attr)) == True]
# В какой магической переменной хранится содержимое help
(help(dict) == (dict.__doc__))
# Есть 2 кортежа. Получить третий конкатенацию (объединение) двух первых
tuple1 = (1,2,3)
tuple2 = (4,5,6)
result = tuple1 + tuple2
# Есть 2 кортежа. Получить третий объединение _уникальных_ элементов первых двух кортежей
tuple1 = (1,2,3,4,5,6)
tuple2 = (4,5,6,7,8,9)
result = set(tuple1 + tuple2)
# Почему если в цикле for список меняется, используют for i in lst[:]. Что значит [:] ?
# Ответ: b = a[:]" - это копия, a "c = a" cсылка на тот же объект',
# поэтому если cам <lst> в цикле изменяется, то при объявлении цикла пользуйте <lst[:]>
a = [1,2,3,4,5]
b = a[:]
c = a
a.append(6)
# Составить словарь из двух списков - в одном ключи, в другом значения
keys = ['a', 'b', 'c']
values = [1, 2, 3]
res_dictionary = dict(zip(keys,values))
# Словарь из списков разной длины. Есть key, но нет val - то есть val=None; если нету key - игнорировать
from itertools import zip_longest
keys = ['a', 'b', 'c', 'd']
vals = [1, 2, 3, 4, 5, 6]
dictionary = dict(zip_longest(keys, vals))
if None in dictionary:
dictionary.pop(None)
print('dictionary = {}'.format(dictionary))
# Инвертировать словарь (ключи поменять со значениями)
dictionary = {'a': 1, 'b': 2, 'c': 3}
new_dictionary = {key:val for key,val in zip(dictionary.values(), dictionary.keys())}
# Есть строка в юникоде. Получить 8-битную строку в кодировках utf-8 и cp1251
uni_str = 'Привет мир'
utf8_str = uni_str.encode('utf-8')
cp1251_str = uni_str.encode('cp1251')
# Есть строка в cp1251. Получить юникодную.
uni_str = cp1251_str.decode('cp1251')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment