답변:
T = [L[i] for i in Idx]
numpy를 사용하는 경우 다음과 같이 확장 슬라이싱을 수행 할 수 있습니다.
>>> import numpy
>>> a=numpy.array(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
>>> Idx = [0, 3, 7]
>>> a[Idx]
array(['a', 'd', 'h'],
dtype='|S1')
... 그리고 아마도 더 빠를 것입니다 (numpy 가져 오기를 방해하기에 성능이 충분할 경우)
나는이 접근법 중 어느 것에도 만족하지 않았으므로 Flexlist
정수, 슬라이스 또는 색인 목록으로 유연한 색인을 생성 할 수 있는 클래스를 생각해 냈습니다 .
class Flexlist(list):
def __getitem__(self, keys):
if isinstance(keys, (int, slice)): return list.__getitem__(self, keys)
return [self[k] for k in keys]
예를 들어 다음과 같이 사용하십시오.
L = Flexlist(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
Idx = [0, 3, 7]
T = L[ Idx ]
print(T) # ['a', 'd', 'h']
existing_list = Flexlist(existing_list)
코드를 깨지 않고도 필요한 기능을 사용할 수 있습니다