Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import timeit
- MAX_EXPONENT = 15
- NUMBER = 10
- # define tests
- TEST_IN = '''
- found = 0
- for x in needles:
- if x in haystack:
- found += 1
- '''
- TEST_SETS = '''
- len(needles & haystack)
- '''
- TEST_SETS_F_LITS = '''
- len(set(needles) & set(haystack))
- '''
- # define setups
- SETUP_LISTS = '''
- import random
- random.seed(81)
- haystack = [random.random()
- for _ in range({size})]
- needles = ([random.random()
- for _ in range(500)]
- + random.sample(haystack, 500))
- '''
- SETUP_SETS = '''
- import random
- random.seed(81)
- haystack = set(random.random()
- for _ in range({size}))
- needles = (set(random.random()
- for _ in range(500))
- | set(random.sample(haystack, 500)))
- '''
- # combine tests and setups
- tests = [('in_lists', TEST_IN, SETUP_LISTS),
- ('in_sets', TEST_IN, SETUP_SETS),
- ('sets', TEST_SETS, SETUP_SETS),
- ('sets_from_lists', TEST_SETS_F_LITS, SETUP_LISTS)]
- #timeit.timeit(TEST_IN,
- # setup=SETUP_SETS.format(size=2**10),
- # number=NUMBER)
- # perform tests and print results
- print('{} {} {}'.format('name', 'time', 'factor'))
- for n in range(10, MAX_EXPONENT+1):
- size = 2**n
- print(40*'-')
- print('size =', size)
- results = [(name,
- timeit.timeit(test, setup=setup.format(size=size), number=NUMBER))
- for name, test, setup in tests]
- t_ref = results[0][1]
- for name, t in results:
- print('{:14} {:12.4f} {:11.2f}'.format(name, t, t_ref/t))
- -------------------------------------------------------------------------
- >>> lambda a,b: a+b
- <function <lambda> at 0x000001F58C698168>
- >>> f = lambda a,b: a+b
- >>> f
- <function <lambda> at 0x000001F58C698288>
- >>> lambda 3,4: a+b
- SyntaxError: invalid syntax
- >>> (lambda a,b: a+b)(12, 15)
- 27
- >>> def stworz_inc(n):
- return (lambda x: x+n)(4)
- >>> stworz_inc(3)
- 7
- >>> stworz_inc(10)
- 14
- >>> def stworz_inc(n):
- return lambda x: x+n
- >>> f10 = stworz_inc(10)
- >>> f5 = stworz_inc(5)
- >>> f1 = stworz_inc(1)
- >>> x = 4
- >>> f10(x), f5(x), f1(x)
- (14, 9, 5)
- -------------------------
- >>> for f in [f1,f5,f10]:
- print(f(x))
- 5
- 9
- 14
- --------------------------
- pary = [
- (3, 'trzy'),
- (1, 'jeden'),
- (2, 'dwa'),
- (4, 'cztery'),
- ]
- >>> sorted(pary)
- [(1, 'jeden'), (2, 'dwa'), (3, 'trzy'), (4, 'cztery')]
- >>> pary.sort()
- >>> pary
- [(1, 'jeden'), (2, 'dwa'), (3, 'trzy'), (4, 'cztery')]
- >>>
- -----------------------
- sorted(pary, key=lambda x: x[1])
- [(4, 'cztery'), (2, 'dwa'), (1, 'jeden'), (3, 'trzy')]
- >>> sorted(pary, key=lambda x: x[1][-1])
- [(2, 'dwa'), (1, 'jeden'), (3, 'trzy'), (4, 'cztery')]
- >>> sorted(pary, key=lambda x: abs(x[0]))
- [(1, 'jeden'), (2, 'dwa'), (3, 'trzy'), (4, 'cztery')]
Add Comment
Please, Sign In to add comment