Отслеживать номера в списке - PullRequest
0 голосов
/ 29 января 2020

У меня очень длинный список чисел, и у меня есть оператор if, который извлекает числа, превышающие определенное значение, и помещает их в другой список. Я хочу иметь возможность отслеживать идентификатор в исходном списке, чтобы я вернул go и сопоставил их с другой информацией. См. Пример ниже:

test_list = [564, 564748, 654, 89, 567, 98]

large_numbers = []

for i in test_list:
    if i >= 600:
        large_numbers.append(i)

Это прекрасно работает, и я получаю:

large_numbers = [564748, 654]

Однако есть ли способ назначить идентификатор каждому, чтобы я знал, где он был в Оригинальный список. В идеале это выдает что-то похожее на:

print(ID_of_large_numbers) 

[0,1]

Таким образом, я бы знал, что это 1-й и 2-й элемент исходного списка. (В моем личном списке несколько сотен элементов, и я сортирую его в массив numpy по убыванию, поэтому не могу найти их идентификатор).

Ответы [ 3 ]

2 голосов
/ 29 января 2020

Вы можете использовать enumerate в вашем for-l oop как-то так:

for idx,i in enumerate(test_list):
    if i >= 600:
        large_numbers.append(i)
        ID_of_large_numbers.append(idx)
1 голос
/ 29 января 2020

Вы могли бы сделать это с пониманием dict:

test_list = [12, 642]
large_num_by_original_index = {i: n for i, n in enumerate(test_list) if n >= 600}

Это проходит через каждый элемент в списке и сохраняет его в словаре вместе с его индексом. Вышеупомянутый словарь будет содержать:

{1: 642}

PS: выберите лучшее имя для результирующего словаря

0 голосов
/ 29 января 2020
test_list = [564, 564748, 654, 89, 567, 98]
large_numbers = []
large_numbers_index = []
for i, e in enumerate(test_list):
    if e >= 600:
        large_numbers.append(e)
        large_numbers_index.append(i)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...