In [1]:
l = list('abcde')
print(l)


['a', 'b', 'c', 'd', 'e']

In [2]:
print(l.index('a'))


0

In [3]:
print(l.index('c'))


2

In [4]:
# print(l.index('x'))
# ValueError: 'x' is not in list

In [5]:
def my_index(l, x, default=False):
    if x in l:
        return l.index(x)
    else:
        return default

In [6]:
print(my_index(l, 'd'))


3

In [7]:
print(my_index(l, 'x'))


False

In [8]:
print(my_index(l, 'x', -1))


-1

In [9]:
l_dup = list('abcba')
print(l_dup)


['a', 'b', 'c', 'b', 'a']

In [10]:
print(l_dup.index('a'))


0

In [11]:
print(l_dup.index('b'))


1

In [12]:
print([i for i, x in enumerate(l_dup) if x == 'a'])


[0, 4]

In [13]:
print([i for i, x in enumerate(l_dup) if x == 'b'])


[1, 3]

In [14]:
print([i for i, x in enumerate(l_dup) if x == 'c'])


[2]

In [15]:
print([i for i, x in enumerate(l_dup) if x == 'x'])


[]

In [16]:
def my_index_multi(l, x):
    return [i for i, _x in enumerate(l) if _x == x]

In [17]:
print(my_index_multi(l_dup, 'a'))


[0, 4]

In [18]:
print(my_index_multi(l_dup, 'c'))


[2]

In [19]:
print(my_index_multi(l_dup, 'x'))


[]

In [20]:
t = tuple('abcde')
print(t)


('a', 'b', 'c', 'd', 'e')

In [21]:
print(t.index('a'))


0

In [22]:
# print(t.index('x'))
# ValueError: tuple.index(x): x not in tuple

In [23]:
print(my_index(t, 'c'))


2

In [24]:
print(my_index(t, 'x'))


False

In [25]:
t_dup = tuple('abcba')
print(t_dup)


('a', 'b', 'c', 'b', 'a')

In [26]:
print(my_index_multi(t_dup, 'a'))


[0, 4]

In [27]:
def my_index2(l, x, default=False):
    return l.index(x) if x in l else default

In [28]:
print(my_index2(l, 'd'))


3

In [29]:
print(my_index2(l, 'x'))


False

In [30]:
print(my_index2(l, 'x', -1))


-1