Поиск максимума
Для поиска максимума Python имеет функцию max().Поэтому только для примера приведём реализацию поиска максимума:
from random import random
#Создаём случайный список
L=[0]*20
L=list(map(lambda x: random(),L))
print (L)
#Поиск максимума
Lmax=L[0]
for i in range(1,len(L)):
if L[i]>Lmax:
Lmax=L[i]
print ('Lmax=',Lmax)
Сортировка
Для сортировки список в Python имеет встроенный метод sort. Поэтому только как пример учебной программы можно привести сортировку методом простых вставок.
#Сортировка методом простых вставок
#Перемещаем 1 элемент из списка L в список L1
L1=[L.pop()]
while len(L)>0:
x=L.pop() # Извлекаем элемент из списка L
for i in range(0,len(L1)): # Ищем место для вставки
if L1[i]>x: #
L1.insert(i,x) # Вставляем в список L1
Break
else:
L1=L1+[x] #Если не вставили в цикле - вставляем последним.
print ('L1=',L1)
Выбор/удаление элементов по условию
Наиболее естественный способ выбора или удаления элементов – использование генератора списков:
#Формируем список 1,2,3...99
L1=list(range(1,100))
#Выбираем элементы по условию
L2=[x for x in L1 if not (30<x<70)]
В качестве альтернативы мы можем самостоятельно написать функции для извлечения или удаления из списка элементов, удовлетворяющих определённым условиям. Приведём пример функции my_remove, особенностью которой является то, что она не создаёт новый список, а удаляет элементы из существующего:
def my_remove(L,f):
"""Функция удаляет в списке L элементы, удовлетворяющие условию f"""
i=0
while i<len(L):
if f(L[i]):
L.pop(i)
else:
i+=1
#Формируем список 1,2,3...99
L1=list(range(1,100))
#Функция, которая определяет, какие элементы необходимо удалить
def f1(x):
return 30<x<70
#Удаляем элементы, удовлетворяющие функции f1
my_remove(L1,f1)
print (L1)
Преимущество функции my_remove состоит в том, что она экономит память, но выполняется медленнее, чем генератор списка. Хронометраж показал, что наиболее значительный вклад во время выполнения функции my_remove вносят проверки условий.
Словари
Словари реализуют отображение между именами (ключами, key) и объектами (элементами). Формат записи: {ключ1:значение1, ключ2:значение2…}
В следующем примере создается словарь, содержащий атомные массы некоторых химических элементов. Затем добавляется новый пункт и, наконец, вычисляется масса молекулы воды
atomic_mass = {'H': 1.,'C': 12., 'S': 32.}
atomic_mass['O'] = 16
print (atomic_mass['O'] + 2*atomic_mass['H'])
Или тепловой баланс двигателя, описанный с помощью словаря:
Balance={"q_e":.4607056475,"q_r":.1330927426e-1,"q_w":.7739854878e-1,"q_г":.3111795140,"q_м":.5584776238e-1,"q_нб":.8155925314e-1,"q_ТК":.1373464876}
print (list(map(lambda x:Balance[x],["q_e","q_r"])))
К словарям могут применяться следующие операции:
| Операция | Описание |
| x = d[k] | Обращение к элементу с ключом key |
| d[k] = x | Присваивание элементу с ключом key |
| del d[k] | Удаление элемента с ключом key |
| k in d | Проверка наличия элемента с ключом key |
| len(d) | Количество элементов в словаре |
Удалим элемент 'O' из словаря из примера выше:
del atomic_mass['O']
print (atomic_mass)
Вывод:
{'C': 12, 'S': 32, 'H': 1.0}
В качестве ключей допускается использовать любые неизменяемые объекты, такие как строки, числа и кортежи. Кроме того, в качестве ключей можно использовать списки значений, разделенные запятыми, как показано ниже:
d = { }
d[1,2,3] = “foo”
d[1,0,3] = “bar”
Методы словарей
dict.clear() - очищает словарь.
dict.copy() - возвращает копию словаря.
classmethod dict.fromkeys(seq[, value]) - создает словарь с ключами из seq и значением value (по умолчанию None).
dict.get(key[, default]) - возвращает значение ключа, но если его нет, не бросает исключение, а возвращает default (по умолчанию None).
dict.items() - возвращает пары (ключ, значение).
dict.keys() - возвращает ключи в словаре.
dict.pop(key[, default]) - удаляет ключ и возвращает значение. Если ключа нет, возвращает default (по умолчанию бросает исключение).
dict.popitem() - удаляет и возвращает пару (ключ, значение). Если словарь пуст, бросает исключение KeyError. Помните, что словари неупорядочены.
dict.setdefault(key[, default]) - возвращает значение ключа, но если его нет, не бросает исключение, а создает ключ с значением default (по умолчанию None).
dict.update([other]) - обновляет словарь, добавляя пары (ключ, значение) из other. Существующие ключи перезаписываются. Возвращает None (не новый словарь!).
dict.values() - возвращает значения в словаре.
модуль csv содержит класс DictWritter, который позволяет в пару строк сохранить эти данные в таблицу. Применение выглядит так:
import csv
toCSV = [{'name':'bob','age':25,'weight':200},
{'name':'jim','age':31,'weight':180}]
keys = toCSV[0].keys()
with open('people.csv', 'wb') as output_file:
dict_writer = csv.DictWriter(output_file, keys)
dict_writer.writeheader()
dict_writer.writerows(toCSV)
Множества
Операции над множествами
Типы set и frozenset поддерживают ряд общих операций:
| Операция | Описание |
| s | t | Объединение множеств s и t |
| s & t | Пересечение множеств s и t |
| s – t | Разность множеств s и t |
| s ^ t | Симметричная разность множеств s и t |
| len(s) | Количество элементов в множестве |
| max(s) | Максимальное значение |
| min(s) | Минимальное значение |






