Python как сделать список из всех индексов с определенным значением из другого списка - PullRequest
0 голосов
/ 21 января 2020
my_list = ["1", "2", "X", "2", "4", "6", "X"]

def function1(arg1):
    if arg1 == "Y": 
        return False
    else:
        return True

Мне нужно создать новый список со всеми индексными позициями list_, которые имеют значение "X" и имеют значение True через функцию 1.

Я знаю, что функция нелогична, я упростил все для цель вопроса. Спасибо!

Ответы [ 3 ]

1 голос
/ 21 января 2020

Понимание списка может создавать список во время итерации и использования if для проверки условий.

new_list = [i for i, arg in enumerate(my_list) if arg == 'X' and function1(arg)]
1 голос
/ 21 января 2020

Если я правильно понимаю ваш вопрос:

Вы хотите получить все индексы элементов, которые соответствуют определенному значению в массиве

Это понимание списка должно сделать это:

my_list = ["1", "2", "X", "2", "4", "6", "X"]

my_new_list = [x for x in range(len(my_list)) if my_list[x] == "X"]
0 голосов
/ 21 января 2020

Вот как я это сделал (возможно, есть лучший способ)

# creating a list of the indexes in my_list with "X" values:
list1 = [n for n, i in enumerate(my_list) if i == "X"]

# creating a list of the indexes of list1 which are True in function1
list2 = [n for n, i in enumerate(list1) if function1(i)]

# creating the final list with the original indexes from my_list of the "X" values that are True from function1
list3 = [list1[i] for i in list2]
...