2009-04-07 34 views
20

Tôi chắc chắn có một cách hay để làm điều này bằng Python, nhưng tôi khá mới với ngôn ngữ, vì vậy hãy tha thứ cho tôi nếu đây là một cách dễ dàng!Chọn các mục từ danh sách trăn có chỉ mục cụ thể

Tôi có một danh sách và tôi muốn chọn một số giá trị nhất định từ danh sách đó. Các giá trị tôi muốn chọn là những giá trị có chỉ mục trong danh sách được chỉ định trong một danh sách khác.

Ví dụ:

indexes = [2, 4, 5] 
main_list = [0, 1, 9, 3, 2, 6, 1, 9, 8] 

đầu ra sẽ là:

[9, 2, 6] 

(ví dụ, các phần tử với chỉ số 2, 4 và 5 từ main_list).

Tôi có cảm giác điều này có thể thực hiện được bằng cách sử dụng tính năng hiểu danh sách, nhưng tôi không thể tìm ra (đặc biệt, tôi không thể biết cách truy cập chỉ mục của một mục khi sử dụng tính năng hiểu danh sách) .

Trả lời

67
[main_list[x] for x in indexes] 

này sẽ trả về một danh sách các đối tượng, sử dụng một danh sách hiểu.

+1

bây giờ điều này là thanh lịch. +1 –

+1

Việc hiểu danh sách rất thú vị và dễ đọc. Họ thường hóa ra nhanh hơn cả việc lặp lại. –

+0

Điều này thực sự tốt đẹp. Chính xác là thứ tôi muốn, mà không nhận ra nó! – Ben

2
t = [] 
for i in indexes: 
    t.append(main_list[i]) 
return t 
+0

Mặc dù điều này kém thanh lịch hơn so với việc hiểu danh sách, tôi thích nó như một câu trả lời cho một người hoàn toàn mới với Python. –

1

Tôi nghĩ giải pháp của Yuval A khá rõ ràng và đơn giản. Nhưng nếu bạn thực sự muốn có một danh sách một dòng hiểu:

[e for i, e in enumerate(main_list) if i in indexes] 
+0

Trên thực tế điều này là thanh lịch hơn nhiều :) Mặc dù hơi ít có thể đọc được –

+0

Ah! Đó là loại điều tôi đang nghĩ đến. Rât gọn gang! – Ben

1
map(lambda x:main_list[x],indexes) 
Các vấn đề liên quan