Advertisement
furas

Python - find in list

May 25th, 2017
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.69 KB | None | 0 0
  1. def find_outlier_0(integers):
  2.     sorted_list = sorted(integers, key=lambda v: v % 2)
  3.     index = -1 if sorted_list[1] % 2 == 0 else 0
  4.     return sorted_list[index]
  5.  
  6. def find_outlier_1(integers):
  7.     a = []
  8.     b = []
  9.    
  10.     for x in integers:
  11.         if x % 2 == 0:
  12.             a.append(x)
  13.         else:
  14.             b.append(x)
  15.  
  16.     if len(a) > 1:
  17.         return b[0]
  18.  
  19.     return a[0]
  20.  
  21.  
  22. def find_outlier_2(integers):
  23.     evens = []
  24.     odds = []
  25.     evens_len = 0
  26.     odds_len = 0
  27.     for x in integers:
  28.         if x % 2 == 0:
  29.             evens.append(x)
  30.         else:
  31.             odds.append(x)
  32.  
  33.         if len(evens) > 1 and len(odds) == 1:
  34.             return odds[0]
  35.        
  36.         if len(odds) > 1 and len(evens) == 1:
  37.             return evens[0]
  38.  
  39. def find_outlier_3(integers):
  40.     evens = []
  41.     odds = []
  42.     evens_len = 0
  43.     odds_len = 0
  44.    
  45.     for x in integers:
  46.         if x % 2 == 0:
  47.             evens.append(x)
  48.             evens_len += 1
  49.         else:
  50.             odds.append(x)
  51.             odds_len += 1
  52.  
  53.         if evens_len > 1 and odds_len == 1:
  54.             return odds[0]
  55.        
  56.         if odds_len > 1 and evens_len == 1:
  57.             return evens[0]
  58.  
  59.  
  60. # --- tests ---
  61.  
  62. import time
  63. from random import randrange
  64.  
  65. examples = [
  66.     [2, 4, 0, 100, 4, 11, 2602, 36],
  67.     [2, 11, 4, 0, 100, 4, 2602, 36],
  68.     [1, 5, 45, 3, 7, 23, 1111, 5, 2],
  69.     [2*randrange(0, 100) for _ in range(1000)] + [3],
  70.     [3] + [2*randrange(0, 100) for _ in range(900)],
  71. ]
  72.  
  73. functions = [
  74.     find_outlier_0,
  75.     find_outlier_1,
  76.     find_outlier_2,
  77.     find_outlier_3,
  78. ]
  79.  
  80. for data in examples:
  81.  
  82.     print('\ndata:', data[:10], '...')
  83.    
  84.     for func in functions:
  85.  
  86.         start = time.time()
  87.         result = func(data)
  88.         end = time.time()
  89.         print('result:', result, '| time: %.07f' % (end-start) )
  90.  
  91. '''
  92. data: [2, 4, 0, 100, 4, 11, 2602, 36] ...
  93. result: 11 | time: 0.0000148
  94. result: 11 | time: 0.0000050
  95. result: 11 | time: 0.0000052
  96. result: 11 | time: 0.0000045
  97.  
  98. data: [2, 11, 4, 0, 100, 4, 2602, 36] ...
  99. result: 11 | time: 0.0000069
  100. result: 11 | time: 0.0000038
  101. result: 11 | time: 0.0000029
  102. result: 11 | time: 0.0000026
  103.  
  104. data: [1, 5, 45, 3, 7, 23, 1111, 5, 2] ...
  105. result: 2 | time: 0.0000067
  106. result: 2 | time: 0.0000041
  107. result: 2 | time: 0.0000064
  108. result: 2 | time: 0.0000055
  109.  
  110. data: [154, 184, 42, 18, 34, 184, 20, 198, 64, 112] ...
  111. result: 3 | time: 0.0002568
  112. result: 3 | time: 0.0002327
  113. result: 3 | time: 0.0005348
  114. result: 3 | time: 0.0004089
  115.  
  116. data: [3, 132, 102, 112, 108, 152, 172, 156, 194, 18] ...
  117. result: 3 | time: 0.0002401
  118. result: 3 | time: 0.0002086
  119. result: 3 | time: 0.0000033
  120. result: 3 | time: 0.0000031
  121. '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement