Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 233; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.46.202 (0.011 с.) |