code_junkie

How to iterate over a list repeating each element in Python

Nov 13th, 2011
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. l = [1, 2, 3, 4]
  2.  
  3. 1, 1, 2, 2, 3, 3, 4, 4, 1, 1, 2, 2 ...
  4.  
  5. def cycle(iterable):
  6. if not hasattr(cycle, 'state'):
  7. cycle.state = itertools.cycle(iterable)
  8. return cycle.next()
  9.  
  10. >>> l = [1, 2, 3, 4]
  11. >>> cycle(l)
  12. 1
  13. >>> cycle(l)
  14. 2
  15. >>> cycle(l)
  16. 3
  17. >>> cycle(l)
  18. 4
  19. >>> cycle(l)
  20. 1
  21.  
  22. >>> import itertools
  23. >>> def ncycle(iterable, n):
  24. ... for item in itertools.cycle(iterable):
  25. ... for i in range(n):
  26. ... yield item
  27. >>> a = ncycle([1,2], 2)
  28. >>> a.next()
  29. 1
  30. >>> a.next()
  31. 1
  32. >>> a.next()
  33. 2
  34. >>> a.next()
  35. 2
  36. >>> a.next()
  37. 1
  38. >>> a.next()
  39. 1
  40. >>> a.next()
  41. 2
  42. >>> a.next()
  43. 2
  44.  
  45. import itertools
  46.  
  47. def bicycle(iterable, repeat=1):
  48. for item in itertools.cycle(iterable):
  49. for _ in xrange(repeat):
  50. yield item
  51.  
  52. c = bicycle([1,2,3,4], 2)
  53. print [c.next() for _ in xrange(10)]
  54.  
  55. def cycle(iterable):
  56. while True:
  57. for item in iterable:
  58. yield item
  59. yield item
  60.  
  61. x=[1,2,3]
  62. c=cycle(x)
  63.  
  64. print [c.next() for i in range(10)] // prints out [1,1,2,2,3,3,1,1,2,2]
  65.  
  66. iterable = [1, 2, 3, 4]
  67. n = 2
  68.  
  69. while (True):
  70. for elem in iterable:
  71. for dummy in range(n):
  72. print elem # or call function, or whatever
  73.  
  74. [ "%d, %d" % (i, i) for i in [1, 2, 3, 4] * 4]
  75.  
  76. import itertools as it
  77.  
  78. def ncycle(iterable, n=1):
  79. if n == 1:
  80. return it.cycle(iterable)
  81. return it.cycle(it.chain(*it.izip(*([iterable]*n))))
Add Comment
Please, Sign In to add comment