Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Генераторы списков и выражения-генераторыСодержание книги
Поиск на нашем сайте arr = [1, 2, 3, 4] for i in range(len(arr)): arr[i] *= 2 print(arr) # Результат выполнения: [2, 4, 6, 8]
arr = [1, 2, 3, 4] arr = [ i * 2 for i in arr ] print(arr) # Результат выполнения: [2, 4, 6, 8]
arr = [1, 2, 3, 4] arr = [ i * 10 for i in arr if i % 2 == 0 ] print(arr) # Результат выполнения: [20, 40]
arr = [] for i in [1, 2, 3, 4]: if i % 2 == 0: # Если число четное arr.append(i * 10) # Добавляем элемент print(arr) # Результат выполнения: [20, 40]
arr = [[1, 2], [3, 4], [5, 6]] arr = [ j * 10 for i in arr for j in i if j % 2 == 0 ] print(arr) # Результат выполнения: [20, 40, 60]
arr = [] for i in [[1, 2], [3, 4], [5, 6]]: for j in i: if j % 2 == 0: # Если число четное arr.append(j * 10) # Добавляем элемент print(arr) # Результат выполнения: [20, 40, 60]
>>> arr = [1, 4, 12, 45, 10] >>> sum((i for i in arr if i % 2 == 0)) 8.6. Функции map(), zip(), filter() и reduce() Листинг 8.3. Функция map() def func(elem): """ Увеличение значения каждого элемента списка """ return elem + 10 # Возвращаем новое значение
arr = [1, 2, 3, 4, 5] print(list(map(func, arr))) # Результат выполнения: [11, 12, 13, 14, 15]
Листинг 8.4. Суммирование элементов трех списков def func(e1, e2, e3): """ Суммирование элементов трех разных списков """ return e1 + e2 + e3 # Возвращаем новое значение
arr1 = [1, 2, 3, 4, 5] arr2 = [10, 20, 30, 40, 50] arr3 = [100, 200, 300, 400, 500] print(list(map(func, arr1, arr2, arr3))) # Результат выполнения: [111, 222, 333, 444, 555]
def func(e1, e2, e3): """ Суммирование элементов трех разных списков """ return e1 + e2 + e3
arr1 = [1, 2, 3, 4, 5] arr2 = [10, 20] arr3 = [100, 200, 300, 400, 500] print(list(map(func, arr1, arr2, arr3))) # Результат выполнения: [111, 222]
>>> zip([1, 2, 3], [4, 5, 6], [7, 8, 9]) <zip object at 0x00FCAC88> >>> list(zip([1, 2, 3], [4, 5, 6], [7, 8, 9])) [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> list(zip([1, 2, 3], [4, 6], [7, 8, 9, 10])) [(1, 4, 7), (2, 6, 8)]
Листинг 8.5. Суммирование элементов трех списков с помощью функции zip() arr1 = [1, 2, 3, 4, 5] arr2 = [10, 20, 30, 40, 50] arr3 = [100, 200, 300, 400, 500] arr = [x + y + z for (x, y, z) in zip(arr1, arr2, arr3)] print(arr) # Результат выполнения: [111, 222, 333, 444, 555]
>>> filter(None, [1, 0, None, [], 2]) <filter object at 0x00FD58B0> >>> list(filter(None, [1, 0, None, [], 2])) [1, 2]
>>> [ i for i in [1, 0, None, [], 2] if i ] [1, 2]
Листинг 8.6. Пример использования функции filter() def func(elem): return elem >= 0
arr = [-1, 2, -3, 4, 0, -20, 10] arr = list(filter(func, arr)) print(arr) # Результат: [2, 4, 0, 10] # Использование генераторов списков arr = [-1, 2, -3, 4, 0, -20, 10] arr = [ i for i in arr if func(i) ] print(arr) # Результат: [2, 4, 0, 10]
Листинг 8.7. Пример использования функции reduce() from functools import reduce # Подключаем модуль
def func(x, y): print("({0}, {1})".format(x, y), end=" ") return x + y
arr = [1, 2, 3, 4, 5] summa = reduce(func, arr) # Последовательность: (1, 2) (3, 3) (6, 4) (10, 5) print(summa) # Результат выполнения: 15 summa = reduce(func, arr, 10) # Последовательность: (10, 1) (11, 2) (13, 3) (16, 4) (20, 5) print(summa) # Результат выполнения: 25 summa = reduce(func, [], 10) print(summa) # Результат выполнения: 10 Добавление и удаление элементов списка >>> arr = [1, 2, 3] >>> arr.append(4); arr # Добавляем число [1, 2, 3, 4] >>> arr.append([5, 6]); arr # Добавляем список [1, 2, 3, 4, [5, 6]] >>> arr.append((7, 8)); arr # Добавляем кортеж [1, 2, 3, 4, [5, 6], (7, 8)]
>>> arr = [1, 2, 3] >>> arr.extend([4, 5, 6]) # Добавляем список >>> arr.extend((7, 8, 9)) # Добавляем кортеж >>> arr.extend("abc") # Добавляем буквы из строки >>> arr [1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c']
>>> arr = [1, 2, 3] >>> arr + [4, 5, 6] # Возвращает новый список [1, 2, 3, 4, 5, 6] >>> arr += [4, 5, 6] # Изменяет текущий список >>> arr [1, 2, 3, 4, 5, 6]
>>> arr = [1, 2, 3] >>> arr[len(arr):] = [4, 5, 6] # Изменяет текущий список >>> arr [1, 2, 3, 4, 5, 6]
>>> arr = [1, 2, 3] >>> arr.insert(0, 0); arr # Вставляем 0 в начало списка [0, 1, 2, 3] >>> arr.insert(-1, 20); arr # Можно указать отрицательные числа [0, 1, 2, 20, 3] >>> arr.insert(2, 100); arr # Вставляем 100 в позицию 2 [0, 1, 100, 2, 20, 3] >>> arr.insert(10, [4, 5]); arr # Добавляем список [0, 1, 100, 2, 20, 3, [4, 5]]
>>> arr = [1, 2, 3] >>> arr[:0] = [-2, -1, 0] >>> arr [-2, -1, 0, 1, 2, 3]
>>> arr = [1, 2, 3, 4, 5] >>> arr.pop() # Удаляем последний элемент списка >>> arr # Список изменился [1, 2, 3, 4] >>> arr.pop(0) # Удаляем первый элемент списка >>> arr # Список изменился [2, 3, 4]
>>> arr = [1, 2, 3, 4, 5] >>> del arr[4]; arr # Удаляем последний элемент списка [1, 2, 3, 4] >>> del arr[:2]; arr # Удаляем первый и второй элементы [3, 4]
>>> arr = [1, 2, 3, 1, 1] >>> arr.remove(1) # Удаляет только первый элемент >>> arr [2, 3, 1, 1] >>> arr.remove(5) # Такого элемента нет Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> arr.remove(5) # Такого элемента нет ValueError: list.remove(x): x not in list
>>> arr = [1, 2, 3, 1, 1] >>> arr.clear() >>> arr []
>>> arr = [1, 2, 3, 1, 1, 2, 2, 3, 3] >>> s = set(arr) # Преобразуем список во множество >>> s {1, 2, 3} >>> arr = list(s) # Преобразуем множество в список >>> arr # Все повторы были удалены [1, 2, 3] Поиск элемента в списке и получение сведений о значениях, входящих в список >>> 2 in [1, 2, 3, 4, 5], 6 in [1, 2, 3, 4, 5] # Проверка на вхождение (True, False) >>> 2 not in [1, 2, 3, 4, 5], 6 not in [1, 2, 3, 4, 5] # Проверка на невхождение (False, True)
>>> arr = [1, 2, 1, 2, 1] >>> arr.index(1), arr.index(2) (0, 1) >>> arr.index(1, 1), arr.index(1, 3, 5) (2, 4) >>> arr.index(3) Traceback (most recent call last): File "<pyshell#16>", line 1, in <module> arr.index(3) ValueError: 3 is not in list
>>> arr = [1, 2, 1, 2, 1] >>> arr.count(1), arr.count(2) (3, 2) >>> arr.count(3) # Элемент не входит в список
>>> arr = [1, 2, 3, 4, 5] >>> max(arr), min(arr) (5, 1)
>>> any([0, None]), any([0, None, 1]), any([]) (False, True, False)
>>> all([0, None]), all([0, None, 1]), all([]), all(["str", 10]) (False, False, True, True) Переворачивание и перемешивание списка >>> arr = [1, 2, 3, 4, 5] >>> arr.reverse() # Изменяется текущий список >>> arr [5, 4, 3, 2, 1]
>>> arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> reversed(arr) <list_reverseiterator object at 0x00FD5150> >>> list(reversed(arr)) # Использование функции list() [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] >>> for i in reversed(arr): print(i, end=" ") # Вывод с помощью цикла
10 9 8 7 6 5 4 3 2 1 >>> [i for i in reversed(arr)] # Использование генератора списков [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> import random # Подключаем модуль random >>> arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> random.shuffle(arr) # Перемешиваем список случайным образом >>> arr [2, 7, 10, 4, 6, 8, 9, 3, 1, 5] Выбор элементов случайным образом >>> import random # Подключаем модуль random >>> random.choice(["s", "t", "r"]) # Список 's'
>>> arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> random.sample(arr, 2) [7, 10] >>> arr # Сам список не изменяется [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] Сортировка списка >>> arr = [2, 7, 10, 4, 6, 8, 9, 3, 1, 5] >>> arr.sort() # Изменяет текущий список >>> arr [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> arr = [2, 7, 10, 4, 6, 8, 9, 3, 1, 5] >>> arr.sort(reverse=True) # Сортировка по убыванию >>> arr [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
Листинг 8.8. Стандартная сортировка arr = ["единица1", "Единый", "Единица2"] arr.sort() for i in arr: print(i, end=" ") # Результат выполнения: Единица2 Единый единица1
Листинг 8.9. Пользовательская сортировка arr = ["единица1", "Единый", "Единица2"] arr.sort(key=str.lower) # Указываем метод lower() for i in arr: print(i, end=" ") # Результат выполнения: единица1 Единица2 Единый
Листинг 8.10. Пример использования функции sorted() >>> arr = [2, 7, 10, 4, 6, 8, 9, 3, 1, 5] >>> sorted(arr) # Возвращает новый список! [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> sorted(arr, reverse=True) # Возвращает новый список! [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] >>> arr = ["единица1", "Единый", "Единица2"] >>> sorted(arr, key=str.lower) ['единица1', 'Единица2', 'Единый'] Заполнение списка числами >>> list(range(11)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(range(1, 16)) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
>>> list(range(15, 0, -1)) [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> import random >>> arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> random.sample(arr, 3) [1, 9, 5] >>> random.sample(range(300), 5) [259, 294, 142, 292, 245] 8.13. Преобразование списка в строку >>> arr = ["word1", "word2", "word3"] >>> " — ".join(arr) 'word1 — word2 — word3'
>>> arr = ["word1", "word2", "word3", 2] >>> " — ".join(arr) Traceback (most recent call last): File "<pyshell#69>", line 1, in <module> " — ".join(arr) TypeError: sequence item 3: expected str instance, int found
>>> arr = ["word1", "word2", "word3", 2] >>> " — ".join((str(i) for i in arr)) 'word1 — word2 — word3 — 2'
>>> arr = ["word1", "word2", "word3", 2] >>> str(arr) "['word1', 'word2', 'word3', 2]" Кортежи >>> tuple() # Создаем пустой кортеж () >>> tuple("String") # Преобразуем строку в кортеж ('S', 't', 'r', 'i', 'n', 'g') >>> tuple([1, 2, 3, 4, 5]) # Преобразуем список в кортеж (1, 2, 3, 4, 5)
>>> t1 = () # Создаем пустой кортеж >>> t2 = (5,) # Создаем кортеж из одного элемента >>> t3 = (1, "str", (3, 4)) # Кортеж из трех элементов >>> t4 = 1, "str", (3, 4) # Кортеж из трех элементов >>> t1, t2, t3, t4 ((), (5,), (1, 'str', (3, 4)), (1, 'str', (3, 4)))
>>> t = (5); type(t) # Получили число, а не кортеж! <class 'int'> >>> t = ("str"); type(t) # Получили строку, а не кортеж! <class 'str'>
>>> t = (1, 2, 3, 4, 5, 6, 7, 8, 9) >>> t[0] # Получаем значение первого элемента кортежа >>> t[::-1] # Изменяем порядок следования элементов (9, 8, 7, 6, 5, 4, 3, 2, 1) >>> t[2:5] # Получаем срез (3, 4, 5) >>> 8 in t, 0 in t # Проверка на вхождение (True, False) >>> (1, 2, 3) * 3 # Повторение (1, 2, 3, 1, 2, 3, 1, 2, 3) >>> (1, 2, 3) + (4, 5, 6) # Конкатенация (1, 2, 3, 4, 5, 6)
>>> t = (1, 2, 3) # Создаем кортеж >>> t[0] # Получаем элемент по индексу >>> t[0] = 50 # Изменить элемент по индексу нельзя! Traceback (most recent call last): File "<pyshell#95>", line 1, in <module> t[0] = 50 # Изменить элемент по индексу нельзя! TypeError: 'tuple' object does not support item assignment
>>> t = (1, 2, 3) # Создаем кортеж >>> len(t) # Получаем количество элементов >>> t = (1, 2, 1, 2, 1) >>> t.index(1), t.index(2) # Ищем элементы в кортеже (0, 1) Множества >>> s = set() >>> s set([])
>>> set("string") # Преобразуем строку set(['g', 'i', 'n', 's', 'r', 't']) >>> set([1, 2, 3, 4, 5]) # Преобразуем список set([1, 2, 3, 4, 5]) >>> set((1, 2, 3, 4, 5)) # Преобразуем кортеж set([1, 2, 3, 4, 5]) >>> set([1, 2, 3, 1, 2, 3]) # Остаются только уникальные элементы set([1, 2, 3])
>>> for i in set([1, 2, 3]): print i 1 2 3
>>> len(set([1, 2, 3]))
>>> s = set([1, 2, 3]) >>> s.union(set([4, 5, 6])), s | set([4, 5, 6]) (set([1, 2, 3, 4, 5, 6]), set([1, 2, 3, 4, 5, 6]))
>>> set([1, 2, 3]) | set([1, 2, 3]) set([1, 2, 3])
>>> s = set([1, 2, 3]) >>> s.update(set([4, 5, 6])) >>> s set([1, 2, 3, 4, 5, 6]) >>> s |= set([7, 8, 9]) >>> s set([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> set([1, 2, 3]) - set([1, 2, 4]) set([3]) >>> s = set([1, 2, 3]) >>> s.difference(set([1, 2, 4])) set([3])
>>> s = set([1, 2, 3]) >>> s.difference_update(set([1, 2, 4])) >>> s set([3]) >>> s -= set([3, 4, 5]) >>> s set([])
>>> set([1, 2, 3]) & set([1, 2, 4]) set([1, 2]) >>> s = set([1, 2, 3]) >>> s.intersection(set([1, 2, 4])) set([1, 2])
>>> s = set([1, 2, 3]) >>> s.intersection_update(set([1, 2, 4])) >>> s set([1, 2]) >>> s &= set([1, 6, 7]) >>> s set([1])
>>> s = set([1, 2, 3]) >>> s ^ set([1, 2, 4]), s.symmetric_difference(set([1, 2, 4])) (set([3, 4]), set([3, 4])) >>> s ^ set([1, 2, 3]), s.symmetric_difference(set([1, 2, 3])) (set([]), set([])) >>> s ^ set([4, 5, 6]), s.symmetric_difference(set([4, 5, 6])) (set([1, 2, 3, 4, 5, 6]), set([1, 2, 3, 4, 5, 6]))
>>> s = set([1, 2, 3]) >>> s.symmetric_difference_update(set([1, 2, 4])) >>> s set([3, 4]) >>> s ^= set([3, 5, 6]) >>> s set([4, 5, 6])
>>> s = set([1, 2, 3, 4, 5]) >>> 1 in s, 12 in s (True, False)
>>> s = set([1, 2, 3, 4, 5]) >>> 1 in s, 12 in s (False, True)
>>> set([1, 2, 3]) == set([1, 2, 3]) True >>> set([1, 2, 3]) == set([3, 2, 1]) True >>> set([1, 2, 3]) == set([1, 2, 3, 4]) False
>>> s = set([1, 2, 3]) >>> s <= set([1, 2]), s <= set([1, 2, 3, 4]) (False, True) >>> s.issubset(set([1, 2])), s.issubset(set([1, 2, 3, 4])) (False, True)
>>> s = set([1, 2, 3]) >>> s < set([1, 2, 3]), s < set([1, 2, 3, 4]) (False, True)
>>> s = set([1, 2, 3]) >>> s >= set([1, 2]), s >= set([1, 2, 3, 4]) (True, False) >>> s.issuperset(set([1, 2])), s.issuperset(set([1, 2, 3, 4])) (True, False)
>>> s = set([1, 2, 3]) >>> s > set([1, 2]), s > set([1, 2, 3]) (True, False)
>>> s = set([1, 2, 3]) >>> s.isdisjoint(set([4, 5, 6])) True >>> s.isdisjoint(set([1, 3, 5])) False
>>> s = set([1, 2, 3]) >>> c = s; s is c # С помощью = копию создать нельзя! True >>> c = s.copy() # Создаем копию объекта >>> c set([1, 2, 3]) >>> s is c # Теперь это разные объекты False
>>> s = set([1, 2, 3]) >>> s.add(4); s set([1, 2, 3, 4])
>>> s = set([1, 2, 3]) >>> s.remove(3); s # Элемент существует set([1, 2]) >>> s.remove(5) # Элемент НЕ существует Traceback (most recent call last): File "<pyshell#78>", line 1, in <module> s.remove(5) # Элемент НЕ существует KeyError: 5
>>> s = set([1, 2, 3]) >>> s.discard(3); s # Элемент существует set([1, 2]) >>> s.discard(5); s # Элемент НЕ существует set([1, 2])
>>> s = set([1, 2]) >>> s.pop(), s (1, set([2])) >>> s.pop(), s (2, set([])) >>> s.pop() # Если нет элементов, то будет ошибка Traceback (most recent call last): File "<pyshell#89>", line 1, in <module> s.pop() # Если нет элементов, то будет ошибка KeyError: 'pop from an empty set'
>>> s = set([1, 2, 3]) >>> s.clear(); s set([])
>>> {x for x in [1, 2, 1, 2, 1, 2, 3]} {1, 2, 3}
>>> {x for x in [1, 2, 1, 2, 1, 2, 3] if x % 2 == 0} {2}
>>> f = frozenset() >>> f frozenset([])
>>> frozenset("string") # Преобразуем строку frozenset(['g', 'i', 'n', 's', 'r', 't']) >>> frozenset([1, 2, 3, 4, 4]) # Преобразуем список frozenset([1, 2, 3, 4]) >>> frozenset((1, 2, 3, 4, 4)) # Преобразуем кортеж frozenset([1, 2, 3, 4]) Диапазоны >>> r = range(1, 10) >>> for i in r: print(i, end = " ") 1 2 3 4 5 6 7 8 9 >>> r = range(10, 110, 10) >>> for i in r: print(i, end = " ") 10 20 30 40 50 60 70 80 90 100 >>> r = range(10, 1, -1) >>> for i in r: print(i, end = " ") 10 9 8 7 6 5 4 3 2
>>> list(range(1, 10)) # Преобразуем в список [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> tuple(range(1, 10)) # Преобразуем в кортеж (1, 2, 3, 4, 5, 6, 7, 8, 9) >>> set(range(1, 10)) # Преобразуем в множество {1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> r = range(1, 10) >>> r[2], r[-1] (3, 9) >>> r[2:4] range(3, 5) >>> 2 in r, 12 in r (True, False) >>> 3 not in r, 13 not in r (False, True) >>> len(r), min(r), max(r) (9, 1, 9) >>> r.index(4), r.count(4) (3, 1)
>>> range(1, 10) == range(1, 10, 1) True >>> range(1, 10, 2) == range(1, 11, 2) True >>> range(1, 10, 2) == range(1, 12, 2) False
>>> range(1, 10, 2)!= range(1, 12, 2) True >>> range(1, 10)!= range(1, 10, 1) False
>>> r = range(1, 10) >>> r.start, r.stop, r.step (1, 10, 1) 8.17. Модуль itertools import itertools
|
||
|
Последнее изменение этой страницы: 2016-06-23; просмотров: 322; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.005 с.) |