target
, index
. , int target
. , 'b'
. .
, , .
def find_ba(x, target=('b','a')):
try:
ind = 0
while ind < len(x):
ind += x[ind:].index(target[0])
if x[ind+1] == target[1]:
return ind
ind += 1
except ValueError:
return None
:
letters = ['f', 'y', 'h', 'u', 't', 'l', 'y', 'u', 'm', 'z', 'a', 'a',
'i', 't', 'g', 'm', 'b', 'l', 'z', 'q', 'g', 'f', 'f', 'b',
'b', 'a', 'c', 'z', 'n', 'j', 'v', 'b', 'k', 'j', 'y', 'm',
'm', 'f', 'z', 'x', 'f', 'q', 'w', 'h', 'p', 'x', 't', 'n',
'm', 'd', 'z', 'q', 'v', 'h', 'b', 'f', 'q', 'd', 'b', 's',
'a', 't', 'j', 'm', 'h', 'r', 'd', 'n', 'e', 'k', 'y', 'z',
'd', 'e', 'x', 'h', 'r', 'z', 'b', 'n', 'q', 'v', 't', 'q',
'f', 'w', 'b', 'w', 'f', 'c', 'f', 'h', 'q', 'o', 'r', 'f',
'w', 'w', 'n', 'v']
find_ba(letters)
, zip
:
def find_ba1(x):
try:
return [(i,j) for i,j in zip(x[:-1], x[1:])].index(('b', 'a'))
except ValueError:
return None
:
%timeit find_ba(letters)
100000 loops, best of 3: 2.31 µs per loop
%timeit find_ba1(letters)
100000 loops, best of 3: 8.4 µs per loop