How to get particular index number of list items

Question:

my_list = ['A', 'B', 'C', 'D', 'E', 'B', 'F', 'D', 'C', 'B']

idx = my_list.index('B')
print("index :", idx)

In here I used the ‘.index()’ function.

for i in my_list:
    print(f"index no. {my_list.index(i)}")

I tried to find each index number of the items of the (my_list) list.
But it gave same result for same values. But they located in difference places of the list.

if 'B' == my_list[(len(my_list) - 1)]:
    print("True")

if 'B' == my_list[(len(my_list) - 4)]:
    print("True")

I need to mention particular values by the index number of their (to do something).
Imagine; I need to set values to nesting with the values of the list.
i.e :

my_list_2 = ['A', 'B', '2', 'C', '3', 'D', '4', 'E', 'B', '2', 'F', '6', 'D', 'C', '3', 'B']
              -    ------    ------    ------    -    ------    ------    -    ------    -

If I want to nesting values with their Consecutive (number type) items and
the other values need to nest with ‘*’ mark (as default).Because they have no any Consecutive (numeric) values.

so then how I mention each (string) values and (numeric) values in a coding part to nesting them.
In this case as my example I expected result:

–> my_list_2 = [[‘A’, ‘‘], [‘B’, ‘2’], [‘C’, ‘3’], [‘D’, ‘4’], [‘E’, ‘‘], [‘B’, ‘2’], [‘F’, ‘6’], [‘D’, ‘‘], [‘C’, ‘3’], [‘B’, ‘‘]]

This is the coding part which I tried to do this :

def_setter = [
    [my_list_2[i], '*'] if my_list_2[i].isalpha() and my_list_2[i + 1].isalpha() else [my_list_2[i], my_list_2[i + 1]]
    for i in range(0, len(my_list_2) - 1)]

print("Result : ", def_setter)

But it not gave me the expected result.

Could you please help me to do this !

Asked By: Pramu

||

Answers:

There might be a more pythonic way to reorganize this array, however, with the following function you can loop through the list and append [letter, value] if value is a number, append [letter, ''] if value is a letter.

def_setter = []
i = 0
while i < len(my_list_2):
    if i + 1 == len(my_list_2):
        if my_list_2[i].isalpha():
            def_setter.append([my_list_2[i], ''])
            break
    prev, cur = my_list_2[i], my_list_2[i + 1]
    if cur.isalpha():
        def_setter.append([prev, ''])
        i += 1
    else:
        def_setter.append([prev, cur])
        i += 2
print(def_setter)

>>> [['A', ''],
 ['B', '2'],
 ['C', '3'],
 ['D', '4'],
 ['E', ''],
 ['B', '2'],
 ['F', '6'],
 ['D', ''],
 ['C', '3'],
 ['B', '']]
Answered By: Martin
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.