Advertisement
Guest User

Untitled

a guest
Aug 21st, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.44 KB | None | 0 0
  1. >>>s = set([1, 2, 3])
  2.  
  3. >>>elem = s.pop()
  4. >>>s.add(elem)
  5.  
  6. for e in s:
  7. break
  8. # e is now an element from s
  9.  
  10. e = next(iter(s))
  11.  
  12. >>> s = set([1, 2, 3])
  13. >>> list(s)[0]
  14. 1
  15.  
  16. from timeit import *
  17.  
  18. stats = ["for i in xrange(1000): iter(s).next() ",
  19. "for i in xrange(1000): ntfor x in s: nttbreak",
  20. "for i in xrange(1000): s.add(s.pop()) ",
  21. "for i in xrange(1000): s.get() "]
  22.  
  23. for stat in stats:
  24. t = Timer(stat, setup="s=set(range(100))")
  25. try:
  26. print "Time for %s:t %f"%(stat, t.timeit(number=1000))
  27. except:
  28. t.print_exc()
  29.  
  30. $ ./test_get.py
  31. Time for for i in xrange(1000): iter(s).next() : 0.433080
  32. Time for for i in xrange(1000):
  33. for x in s:
  34. break: 0.148695
  35. Time for for i in xrange(1000): s.add(s.pop()) : 0.317418
  36. Time for for i in xrange(1000): s.get() : 0.146673
  37.  
  38. >>> import random
  39. >>> s = set([1,2,3])
  40. >>> random.sample(s, 1)
  41. [2]
  42.  
  43. >>> list(set(range(10))) == range(10)
  44. True
  45.  
  46. >>> lst = list(s) # once, O(len(s))?
  47. ...
  48. >>> e = random.sample(lst, 1)[0] # constant time
  49.  
  50. from timeit import Timer
  51.  
  52. stats = [
  53. "for i in range(1000): ntfor x in s: nttbreak",
  54. "for i in range(1000): next(iter(s))",
  55. "for i in range(1000): s.add(s.pop())",
  56. "for i in range(1000): list(s)[0]",
  57. "for i in range(1000): random.sample(s, 1)",
  58. ]
  59.  
  60. for stat in stats:
  61. t = Timer(stat, setup="import randomns=set(range(100))")
  62. try:
  63. print("Time for %s:t %f"%(stat, t.timeit(number=1000)))
  64. except:
  65. t.print_exc()
  66.  
  67. $ ./test_get.py
  68. Time for for i in range(1000):
  69. for x in s:
  70. break: 0.249871
  71. Time for for i in range(1000): next(iter(s)): 0.526266
  72. Time for for i in range(1000): s.add(s.pop()): 0.658832
  73. Time for for i in range(1000): list(s)[0]: 4.117106
  74. Time for for i in range(1000): random.sample(s, 1): 21.851104
  75.  
  76. def anyitem(iterable):
  77. try:
  78. return iter(iterable).next()
  79. except StopIteration:
  80. return None
  81.  
  82. from timeit import *
  83.  
  84. stats = ["for i in range(1000): next(iter(s))",
  85. "for i in range(1000): ntfor x in s: nttbreak",
  86. "for i in range(1000): s.add(s.pop())"]
  87.  
  88. for stat in stats:
  89. t = Timer(stat, setup="s=set(range(100000))")
  90. try:
  91. print("Time for %s:t %f"%(stat, t.timeit(number=1000)))
  92. except:
  93. t.print_exc()
  94.  
  95. Time for for i in range(1000): next(iter(s)): 0.205888
  96. Time for for i in range(1000):
  97. for x in s:
  98. break: 0.083397
  99. Time for for i in range(1000): s.add(s.pop()): 0.226570
  100.  
  101. from timeit import *
  102.  
  103. stats = ["while s:nta = next(iter(s))nts.remove(a)",
  104. "while s:ntfor x in s: breaknts.remove(x)",
  105. "while s:ntx=s.pop()nts.add(x)nts.remove(x)"]
  106.  
  107. for stat in stats:
  108. t = Timer(stat, setup="s=set(range(100000))")
  109. try:
  110. print("Time for %s:t %f"%(stat, t.timeit(number=1000)))
  111. except:
  112. t.print_exc()
  113.  
  114. Time for while s:
  115. a = next(iter(s))
  116. s.remove(a): 2.938494
  117. Time for while s:
  118. for x in s: break
  119. s.remove(x): 2.728367
  120. Time for while s:
  121. x=s.pop()
  122. s.add(x)
  123. s.remove(x): 0.030272
  124.  
  125. e,*_=s
  126.  
  127. [*s][0]
  128.  
  129. poor_man_set = {}
  130. poor_man_set[1] = None
  131. poor_man_set[2] = None
  132. poor_man_set[3] = None
  133. ...
  134.  
  135. keys = poor_man_set.keys()
  136. print "Some key = %s" % keys[0]
  137.  
  138. poor_man_set = {}
  139. poor_man_set[1] = None
  140. poor_man_set[2] = None
  141. poor_man_set[3] = None
  142. poor_man_set = poor_man_set.keys()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement