banovski

Iteration altering

Jun 21st, 2022 (edited)
649
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.11 KB | None | 0 0
  1. #! /usr/bin/env python3
  2.  
  3. class Source:
  4.     def __init__(self, string):
  5.         self.string = string
  6.  
  7.     def __iter__(self):
  8.         # выражение со звездочкой удваивает каждый символ; выражение в
  9.         # круглых скобках возвращает итератор, который и используется
  10.         # в итерационных контекстах: конструкторах коллекций, функциях
  11.         # для работы с последовательностями, генераторах коллекций,
  12.         # операции с in, циклах.
  13.         return (c * 2 for c in self.string)
  14.  
  15. src = Source("Foobar")
  16.  
  17. # list(src) → ['FF', 'oo', 'oo', 'bb', 'aa', 'rr']
  18. # any(src) → True
  19. # list(map(str.upper, src)) → ['FF', 'OO', 'OO', 'BB', 'AA', 'RR']
  20. # {i for i in src} → {'oo', 'aa', 'rr', 'FF', 'bb'}
  21. # "FF" in src → True
  22. # 'F' in src → False
  23. # for i in src: print(i, end = ' ') → FF oo oo bb aa rr
  24. # (a, b, c, d, f, g) = src; print(a, b, c, d, f, g) → FF oo oo bb aa r
  25.  
Add Comment
Please, Sign In to add comment