str1 = 'abc'
str2 = 'de'
str3 = str1 + str2
print(str3) # abcde
tuple1 = (1, 2, 3)
tuple2 = (4, 5)
tuple3 = tuple1 + tuple2
print(tuple3) # (1, 2, 3, 4, 5)
a = [1, 2, 3]
b = [4, 5]
c = a + b
print(a, b, c) # [1, 2, 3] [4, 5] [1, 2, 3, 4, 5]
a = [1, 2, 3]
b = [4, 5]
c = a + [b]
print(a, b, c) # [1, 2, 3] [4, 5] [1, 2, 3, [4, 5]]
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
dict3 = dict1.copy()
dict3.update(dict2)
print(dict3) # {'a': 1, 'c': 3, 'b': 2, 'd': 4}
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
dict3 = {**dict1, **dict2}
print(dict3) # {'a': 1, 'c': 3, 'b': 2, 'd': 4}
# Зададим исходно два множества (скопировать перед каждым примером ниже)
a = {'a', 'b'}
b = { 'b', 'c'} # отступ перед b для наглядности
c = a.union(b) # c = b.union(a) даст такой же результат
# c = a + b # Обычное объединение оператором + не работает
# TypeError: unsupported operand type(s) for +: 'set' and 'set'
c = a | b # Альтернативная форма записи объединения
print(c) # {'a', 'c', 'b'}
c = a.intersection(b) # c = b.intersection(a) даст такой же результат
c = a & b # Альтернативная форма записи пересечения
print(c) # {'b'}
a = {'a', 'b'}
b = { 'b', 'c'}
c = { 'b', 'd'}
d = a.intersection(b, c) # Первый вариант записи
d = set.intersection(a, b, c) # Второй вариант записи (более наглядный)
print(d) # {'b'}
c = a.difference(b) # c = a - b другой способ записи дающий тот же результат
print(c) # {'a'}
c = b.difference(a) # c = b - a другой способ записи дающий тот же результат
print(c) # {'c'}
c = b.symmetric_difference(a)
# c = a.symmetric_difference(b) # даст такой же результат
c = b ^ a # Альтернативная форма записи симметричной разницы
print(c) # {'a', 'c'}
a.extend(b) # a += b эквивалентно a.extend(b)
print(a, b) # [1, 2, 3, 4, 5] [4, 5]
a.append(b) # a += [b] эквивалентно a.append(b)
print(a, b) # [1, 2, 3, [4, 5]] [4, 5]
dict1 = {'a': 1, 'b': 2}
dict2 = {'a': 100, 'c': 3, 'd': 4}
dict1.update(dict2)
print(dict1) # {'a': 100, 'c': 3, 'b': 2, 'd': 4}
a = {'a', 'b'}
b = { 'b', 'c'}
a.difference_update(b)
print(a, b) # {'a'} {'b', 'c'}
a = {'a', 'b'}
b = { 'b', 'c'}
b.difference_update(a)
print(a, b) # {'a', 'b'} {'c'}
a = {'a', 'b'}
b = { 'b', 'c'}
a.intersection_update(b)
print(a, b) # {'b'} {'b', 'c'}
a = {'a', 'b'}
b = { 'b', 'c'}
b.intersection_update(a)
print(a, b) # {'b', 'a'} {'b'}
a = {'a', 'b'}
b = { 'b', 'c'}
a.symmetric_difference_update(b)
print(a, b) # {'c', 'a'} {'c', 'b'}
a = {'a', 'b'}
b = { 'b', 'c'}
b.symmetric_difference_update(a)
print(a, b) # {'a', 'b'} {'c', 'a'}
my_list = [1, 2, 3]
my_list.insert(0, 0) # index = 0 - вставляем в начало
print(my_list) # [0, 1, 2, 3]
my_list.insert(10, 4) # Индекс выходит за границы списка - просто добавим в конец
print(my_list) # [0, 1, 2, 3, 4]
my_list.insert(-10, -1) # Индекс выходит за границы в минус - добавим в начало
print(my_list) # [-1, 0, 1, 2, 3, 4]
my_list = [1, 2, 3]
my_list.insert(1, 1.5) # Вставим между 1 и 2 (индексация с нуля!)
# То есть вставляется на позицию с указанным индексом, а то значение что на ней было
# и те что правее - сдвигаются на 1 индекс вправо
print(my_list) # [1, 1.5, 2, 3]
# Работает со списком
my_list = [1, 2, 3, 4, 5, 6, 7]
del my_list[1] # Удаление элемента по индексу
print(my_list) # [1, 3, 4, 5, 6, 7]
del my_list[-3:-1] # Удаление элементов выбранных срезом
print(my_list) # [1, 3, 4, 7]
# del my_list[10] # IndexError: list assignment index out of range
# Работает со словарем
my_dict = {'a': 1, 'b': 2, 'c': 3}
del my_dict['b']
print(my_dict) # {'a': 1, 'c': 3}
# del my_dict['z'] # KeyError при попытке удалить не сушествующий