Saya ingin mengindeks daftar dengan daftar lain seperti ini
L = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
Idx = [0, 3, 7]
T = L[ Idx ]
dan T harus menjadi daftar yang berisi ['a', 'd', 'h'].
Apakah ada cara yang lebih baik dari itu?
T = []
for i in Idx:
T.append(L[i])
print T
# Gives result ['a', 'd', 'h']
Jika Anda menggunakan numpy, Anda dapat melakukan irisan panjang seperti itu:
... dan mungkin jauh lebih cepat (jika kinerjanya cukup memprihatinkan untuk mengganggu impor yang numpy)
sumber
Pendekatan fungsional:
sumber
b
kebetulan mengandung hanya satu item.sumber
Saya tidak senang dengan salah satu pendekatan ini, jadi saya datang dengan
Flexlist
kelas yang memungkinkan pengindeksan fleksibel, baik dengan integer, slice atau daftar indeks:Yang, sebagai contoh, Anda akan gunakan sebagai:
sumber
existing_list = Flexlist(existing_list)
dan kami memiliki fungsionalitas yang diperlukan tanpa melanggar kode apa punSaya akan menggunakan yang
Dict add
diinginkankeys
untukindex
sumber
Anda juga dapat menggunakan
__getitem__
metode yang digabungkan denganmap
seperti berikut ini:sumber