>>> class A:
def __init__(self, value):
self._value = value
def meth_a(self):
print('Class A Method with value {}...'.format(self._value))
>>> class B(A):
def meth_b(self, value):
self._value = value
print('Class B Method with value {}...'.format(self._value))
>>> x = B(100)
>>> x.meth_a()
Class A Method with value 100...
>>> x.meth_b(40)
Class B Method with value 40...
>>> x.meth_a()
Class A Method with value 40... # Значение атрибута объекта класса А изменилось !
>>> class A:
def __init__(self, value):
self.__value = value
def meth_a(self):
print('Class A Method with value {}...'.format(self.__value))
>>> class B(A):
def meth_b(self, value):
self.__value = value
print('Class B Method with value {}...'.format(self.__value))
>>> x = B(100)
>>> x.meth_a()
Class A Method with value 100...
>>> x.meth_b(40)
Class B Method with value 40...
>>> x.meth_a()
Class A Method with value 100... # Значение атрибута объекта класса А осталось неизменным !
Не совсем понятно, как он работает
# Исходный словарь
>>> prefs = {'person1': {'item1': 5, 'item3': 10},
'person2': {'item1': 3, 'item2': 6}}
# Обращение к значению ключа вложенного словаря
>>> prefs['person1']['item1']
5
# Разница значений ключей
>>> prefs['person1']['item1'] - prefs['person2']['item1']
2
# Функция pow() возведения числа в степень
>>> pow(5, 2)
25
>>> pow(5, 2) == 5 ** 2
True
# Перебираем ключи словаря
>>> [key for key in prefs['person1']]
['item1', 'item3']
>>> [key for key in prefs['person2']]
['item1', 'item2']
# Находим общие для словарей prefs['person1'] и prefs['person2'] ключи
>>> [key for key in prefs['person1'] if key in prefs['person2']]
['item1']
# Функция sum() нахождения суммы
>>> x = list(range(5))
>>> x
[0, 1, 2, 3, 4]
>>> sum(x)
10
>>> x = [1, 2, [3, 4, 5, [6, 7], [8, [9, [10, 11], 12]], 13, 14], 15]
>>> from collections import Iterable
>>> def nested_to_flat(items):
for i in items:
if isinstance(i, Iterable):
yield from nested_to_flat(i)
else:
yield i
>>> list(nested_to_flat(x))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
>>> x = [1, 1, 1, 2, 2, 2, 1, 1, 3, 3, 4, 3, 5]
>>> from itertools import groupby
>>> x_groups_count = [num for _, group in groupby(x) for num, _ in enumerate(group, 1)]
>>> x_groups_count
[1, 2, 3, 1, 2, 3, 1, 2, 1, 2, 1, 1, 1]
в чем моя ошибка?
>>> d = {'1': 'x', '11': 'x1', '3': 'x2', '101': 'x8'}
# исходный
>>> sorted(d)
['1', '101', '11', '3']
# сортируем по int
>>> sorted(d, key=int)
['1', '3', '11', '101']
а если среди ключей будут буквы, тогда возникнет ошибка при конвертации
>>> d = {'zor': 5, 'ert': 5, 'd': 6, 'a': 8, 'zab': 9, '1': 'x', '11': 'x1', '3': 'x2', '101': 'x8'}
# исходный
>>> sorted(d)
['1', '101', '11', '3', 'a', 'd', 'ert', 'zab', 'zor']
# пишем функцию
>>> def d_sort(i):
return int(i) if i.isdigit() else False, i
# сортируем
>>> sorted(d, key=lambda x: d_sort(x))
['a', 'd', 'ert', 'zab', 'zor', '1', '3', '11', '101']
for k in sorted(d.keys())
явное обращение к ключам .keys()for k in sorted(d)
>>> words = [{'src': 'Ананас', 'dst': 323}, {'src': 'Ёжик', 'dst': 3223}, {'src': 'Яблоко', 'dst': 2343}, {'src': 'Hi', 'dst': 78768}]
>>> eng_rus_upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'
>>> res = sorted(words, key=lambda x: eng_rus_upper.index(x['src'][0]))
>>> res
[{'src': 'Hi', 'dst': 78768}, {'src': 'Ананас', 'dst': 323}, {'src': 'Ёжик', 'dst': 3223}, {'src': 'Яблоко', 'dst': 2343}]
>>>
>>> x = [['a', '3', '5', '7'], ['b', '1', '2', '3'], ['д', '1', '2', '3']]
>>> # сортируем по столбцам
>>> x_sort = list(zip(*x))
>>> x_sort
[('a', 'b', 'д'), ('3', '1', '1'), ('5', '2', '2'), ('7', '3', '3')]
>>> # убираем лишний кортеж (с буквами)
>>> x_sort = x_sort[1:]
>>> x_sort
[('3', '1', '1'), ('5', '2', '2'), ('7', '3', '3')]
>>> # переводим строки в числа
>>> x_to_int = [list(map(int, i)) for i in x_sort]
>>> x_to_int
[[3, 1, 1], [5, 2, 2], [7, 3, 3]]
>>> # ищем среднее, округляем до сотых
>>> x_avg_sum = ['{:.2f}'.format(sum(i)/3) for i in x_to_int]
>>> x_avg_sum
['1.67', '3.00', '4.33']