Я хочу проиндексировать список с другим списком, подобным этому
L = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
Idx = [0, 3, 7]
T = L[ Idx ]
и T должен стать списком, содержащим ['a', 'd', 'h'].
Есть ли способ лучше, чем
T = []
for i in Idx:
T.append(L[i])
print T
# Gives result ['a', 'd', 'h']
Если вы используете numpy, вы можете выполнить расширенную нарезку следующим образом:
... и, вероятно, намного быстрее (если производительности достаточно, чтобы беспокоиться о импорте numpy)
источник
Функциональный подход:
источник
b
содержит только один элемент.источник
Мне не понравился ни один из этих подходов, поэтому я придумал
Flexlist
класс, который позволяет гибко индексировать целые числа, фрагменты или список индексов:Что, в вашем примере, вы бы использовали как:
источник
existing_list = Flexlist(existing_list)
и у нас будет необходимая функциональность без взлома кодаЯ хотел бы использовать
Dict add
желательно ,keys
чтобыindex
источник
Вы также можете использовать этот
__getitem__
метод в сочетании соmap
следующим:источник