Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- >>>s = set([1, 2, 3])
- >>>elem = s.pop()
- >>>s.add(elem)
- for e in s:
- break
- # e is now an element from s
- e = next(iter(s))
- >>> s = set([1, 2, 3])
- >>> list(s)[0]
- 1
- from timeit import *
- stats = ["for i in xrange(1000): iter(s).next() ",
- "for i in xrange(1000): ntfor x in s: nttbreak",
- "for i in xrange(1000): s.add(s.pop()) ",
- "for i in xrange(1000): s.get() "]
- for stat in stats:
- t = Timer(stat, setup="s=set(range(100))")
- try:
- print "Time for %s:t %f"%(stat, t.timeit(number=1000))
- except:
- t.print_exc()
- $ ./test_get.py
- Time for for i in xrange(1000): iter(s).next() : 0.433080
- Time for for i in xrange(1000):
- for x in s:
- break: 0.148695
- Time for for i in xrange(1000): s.add(s.pop()) : 0.317418
- Time for for i in xrange(1000): s.get() : 0.146673
- >>> import random
- >>> s = set([1,2,3])
- >>> random.sample(s, 1)
- [2]
- >>> list(set(range(10))) == range(10)
- True
- >>> lst = list(s) # once, O(len(s))?
- ...
- >>> e = random.sample(lst, 1)[0] # constant time
- from timeit import Timer
- stats = [
- "for i in range(1000): ntfor x in s: nttbreak",
- "for i in range(1000): next(iter(s))",
- "for i in range(1000): s.add(s.pop())",
- "for i in range(1000): list(s)[0]",
- "for i in range(1000): random.sample(s, 1)",
- ]
- for stat in stats:
- t = Timer(stat, setup="import randomns=set(range(100))")
- try:
- print("Time for %s:t %f"%(stat, t.timeit(number=1000)))
- except:
- t.print_exc()
- $ ./test_get.py
- Time for for i in range(1000):
- for x in s:
- break: 0.249871
- Time for for i in range(1000): next(iter(s)): 0.526266
- Time for for i in range(1000): s.add(s.pop()): 0.658832
- Time for for i in range(1000): list(s)[0]: 4.117106
- Time for for i in range(1000): random.sample(s, 1): 21.851104
- def anyitem(iterable):
- try:
- return iter(iterable).next()
- except StopIteration:
- return None
- from timeit import *
- stats = ["for i in range(1000): next(iter(s))",
- "for i in range(1000): ntfor x in s: nttbreak",
- "for i in range(1000): s.add(s.pop())"]
- for stat in stats:
- t = Timer(stat, setup="s=set(range(100000))")
- try:
- print("Time for %s:t %f"%(stat, t.timeit(number=1000)))
- except:
- t.print_exc()
- Time for for i in range(1000): next(iter(s)): 0.205888
- Time for for i in range(1000):
- for x in s:
- break: 0.083397
- Time for for i in range(1000): s.add(s.pop()): 0.226570
- from timeit import *
- stats = ["while s:nta = next(iter(s))nts.remove(a)",
- "while s:ntfor x in s: breaknts.remove(x)",
- "while s:ntx=s.pop()nts.add(x)nts.remove(x)"]
- for stat in stats:
- t = Timer(stat, setup="s=set(range(100000))")
- try:
- print("Time for %s:t %f"%(stat, t.timeit(number=1000)))
- except:
- t.print_exc()
- Time for while s:
- a = next(iter(s))
- s.remove(a): 2.938494
- Time for while s:
- for x in s: break
- s.remove(x): 2.728367
- Time for while s:
- x=s.pop()
- s.add(x)
- s.remove(x): 0.030272
- e,*_=s
- [*s][0]
- poor_man_set = {}
- poor_man_set[1] = None
- poor_man_set[2] = None
- poor_man_set[3] = None
- ...
- keys = poor_man_set.keys()
- print "Some key = %s" % keys[0]
- poor_man_set = {}
- poor_man_set[1] = None
- poor_man_set[2] = None
- poor_man_set[3] = None
- poor_man_set = poor_man_set.keys()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement