Формирование списка индексов другого списка в зависимости от входных значений - PullRequest
1 голос
/ 08 апреля 2020

Stackoverflow, привет

У меня есть задача сформировать список индексов переменных из исходного списка, зависит от входных значений:

initial_list=['a', 'b', 'c']
desired_index_variable=[str(i) for i in input('Input desired indexes with space between ').split()]
try:
    for element in initial_list:
        final_list=[]
        desired_index=final_list.append(initial_list.index(element))
        print (desired_index)
except ValueError:
    print ('No such element in initial list')

Вот моя попытка сформировать такой тип из списка, но результат (я не понимаю, почему есть три «Nones»):

Input desired indexes with space between a b
None
None
None

Однако, требуемый результат:

 [0, 1]

По моим new-user logi c моя программа в порядке, но Python говорит, что это не так, очевидно = (

Ответы [ 2 ]

2 голосов
/ 08 апреля 2020

В вашем коде есть несколько ошибок.

  1. Не инициализировать final_list внутри для l oop:
    final_list=[]
    desired_index=final_list.append(initial_list.index(element))

Вы устанавливаете final_list в пустой список на каждой итерации.
2. Вам не нужно устанавливать требуемый_индекс из final_list. Просто добавьте.

desired_index.append(initial_list.index(element))
Вы должны l oop над desired_index_variable. Исправляя все эти проблемы, у меня работает следующее:
initial_list=['a', 'b', 'c']
desired_index_variable=[str(i) for i in input('Input desired indexes with space between ').split()]
try:
    desired_index=[]
    for element in desired_index_variable:
        desired_index.append(initial_list.index(element))
    print (desired_index)
except ValueError:
    print ('No such element in initial list')
0 голосов
/ 08 апреля 2020

list.append работает на месте и возвращает None. Рассмотрим следующий пример:

a = [1,2,3]
b = a.append(4)
print(a)  # [1, 2, 3, 4]
print(b)  # None

Если вы не хотите, чтобы поведение на месте вы могли бы сделать:

a = [1,2,3]
b = a+[4]
print(a)  # [1, 2, 3]
print(b)  # [1, 2, 3, 4]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...