Hướng dẫn how do you select multiple indices from a list in python? - làm cách nào để bạn chọn nhiều chỉ mục từ một danh sách trong python?

129

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có một số danh sách có tất cả cùng một số mục nhập (mỗi lần chỉ định thuộc tính đối tượng):

property_a = [545., 656., 5.4, 33.]
property_b = [ 1.2,  1.3, 2.3, 0.3]
...

và liệt kê với những lá cờ có cùng chiều dài

good_objects = [True, False, False, True]

(có thể dễ dàng thay thế bằng danh sách chỉ mục tương đương:

good_indices = [0, 3]

Cách dễ nhất để tạo danh sách mới

good_objects = [True, False, False, True]
4,
good_objects = [True, False, False, True]
5, ... chỉ chứa các giá trị được chỉ định bởi các mục
good_objects = [True, False, False, True]
6 hoặc các chỉ số là gì?

property_asel = [545., 33.]
property_bsel = [ 1.2, 0.3]

Hướng dẫn how do you select multiple indices from a list in python? - làm cách nào để bạn chọn nhiều chỉ mục từ một danh sách trong python?

Silentghost

295K64 Huy hiệu vàng301 Huy hiệu bạc291 Huy hiệu Đồng64 gold badges301 silver badges291 bronze badges

hỏi ngày 5 tháng 7 năm 2010 lúc 11:30Jul 5, 2010 at 11:30

fuenfundachtzigfuenfundachtzigfuenfundachtzig

7.51612 Huy hiệu vàng60 Huy hiệu bạc83 Huy hiệu đồng12 gold badges60 silver badges83 bronze badges

Bạn chỉ có thể sử dụng danh sách hiểu biết:

property_asel = [val for is_good, val in zip(good_objects, property_a) if is_good]

hoặc

property_asel = [property_a[i] for i in good_indices]

Cái sau nhanh hơn vì có ít

good_objects = [True, False, False, True]
7 hơn độ dài của
good_objects = [True, False, False, True]
8, giả sử
good_objects = [True, False, False, True]
7 được tính toán trước thay vì được tạo ra khi đang bay.


Chỉnh sửa: Tùy chọn đầu tiên tương đương với

good_indices = [0, 3]
0 có sẵn kể từ Python 2.7/3.1. Xem câu trả lời của @Gary Kerr.: The first option is equivalent to
good_indices = [0, 3]
0 available since Python 2.7/3.1. See @Gary Kerr's answer.

property_asel = list(itertools.compress(property_a, good_objects))

Đã trả lời ngày 5 tháng 7 năm 2010 lúc 11:32Jul 5, 2010 at 11:32

Kennytmkennytmkennytm

499K101 Huy hiệu vàng1062 Huy hiệu bạc994 Huy hiệu đồng101 gold badges1062 silver badges994 bronze badges

7

Tôi thấy 2 tùy chọn.

  1. Sử dụng Numpy:

    property_a = numpy.array([545., 656., 5.4, 33.])
    property_b = numpy.array([ 1.2,  1.3, 2.3, 0.3])
    good_objects = [True, False, False, True]
    good_indices = [0, 3]
    property_asel = property_a[good_objects]
    property_bsel = property_b[good_indices]
    
  2. Sử dụng danh sách hiểu và zip nó:

    property_a = [545., 656., 5.4, 33.]
    property_b = [ 1.2,  1.3, 2.3, 0.3]
    good_objects = [True, False, False, True]
    good_indices = [0, 3]
    property_asel = [x for x, y in zip(property_a, good_objects) if y]
    property_bsel = [property_b[i] for i in good_indices]
    

Đã trả lời ngày 5 tháng 7 năm 2010 lúc 11:34Jul 5, 2010 at 11:34

3

Sử dụng zip chức năng tích hợp

property_asel = [a for (a, truth) in zip(property_a, good_objects) if truth]

CHỈNH SỬA

Chỉ cần nhìn vào các tính năng mới của 2.7. Hiện tại có một chức năng trong mô -đun itertools tương tự như mã trên.

http://docs.python.org/library/itertools.html#itertools.compress

good_objects = [True, False, False, True]
0

Đã trả lời ngày 5 tháng 7 năm 2010 lúc 11:34Jul 5, 2010 at 11:34

Hướng dẫn how do you select multiple indices from a list in python? - làm cách nào để bạn chọn nhiều chỉ mục từ một danh sách trong python?

Sử dụng zip chức năng tích hợpGary Kerr

CHỈNH SỬA4 gold badges47 silver badges50 bronze badges

3

Chỉ cần nhìn vào các tính năng mới của 2.7. Hiện tại có một chức năng trong mô -đun itertools tương tự như mã trên.

good_objects = [True, False, False, True]
1

Gary Kerrgary Kerr

good_objects = [True, False, False, True]
2

12.8k4 Huy hiệu vàng47 Huy hiệu bạc 50 Huy hiệu Đồng


Giả sử bạn chỉ có danh sách các mục và danh sách các chỉ số đúng/cần thiết, đây sẽ là nhanh nhất:

Điều này có nghĩa là lựa chọn tài sản sẽ chỉ làm nhiều vòng như có các chỉ số đúng/bắt buộc. Nếu bạn có nhiều danh sách thuộc tính tuân theo các quy tắc của một thẻ (đúng/sai), bạn có thể tạo danh sách chỉ số bằng cách sử dụng cùng một nguyên tắc hiểu danh sách:index for every group of index, item that exists in an enumeration of good objects, if (where) the item is True

Điều này lặp lại thông qua từng mục trong Good_Objects (trong khi ghi nhớ chỉ mục của nó với sự liệt kê) và chỉ trả về các chỉ số trong đó mục là đúng.Mar 11, 2014 at 16:54

Đối với bất kỳ ai không nhận được danh sách hiểu, đây là phiên bản văn xuôi tiếng Anh với mã được tô sáng trong in đậm:Eyrofire

Liệt kê chỉ mục cho mọi nhóm chỉ mục, mục tồn tại trong một bảng liệt kê các đối tượng tốt, nếu (trong đó) vật phẩm là đúng2 silver badges9 bronze badges

Đã trả lời ngày 11 tháng 3 năm 2014 lúc 16:54

good_objects = [True, False, False, True]
3

Eyrofireeyrofire

3102 Huy hiệu bạc9 Huy hiệu ĐồngJun 14, 2014 at 22:08

1

Làm thế nào để bạn chọn nhiều chỉ mục trong Python?

Làm thế nào để bạn chọn nhiều chỉ mục trong Python ?..
Sử dụng map () để truy cập nhiều chỉ số của một danh sách. Bản đồ gọi (Danh sách.
Sử dụng loạt gấu trúc để truy cập nhiều chỉ số của một danh sách. Gọi PD ..
Sử dụng Numpy. lập chỉ mục mảng để truy cập nhiều chỉ số của một danh sách ..

Làm thế nào để bạn chọn nhiều giá trị từ một danh sách trong Python?

Bạn cũng có thể chọn nhiều mục trong một danh sách.Trong ví dụ này, chúng tôi kêu gọi biến của chúng tôi, List1 và các mục từ 0 đến hai.Python chỉ kéo các mục thứ nhất và thứ hai.Bán kết của dấu ngoặc nói với Python để kéo các mục trong danh sách từ số được ghi nhận đầu tiên (không) đến số cuối cùng nhưng miễn trừ nó (ba).The brackets' semicolon tells python to pull items in the list from the first noted number (zero) to the last number but exempt it(three).

Làm thế nào để bạn tìm kiếm nhiều mục trong danh sách Python?

Sử dụng hàm All () để kiểm tra xem nhiều giá trị có nằm trong danh sách không, ví dụ:Nếu tất cả (giá trị trong my_list cho giá trị trong nhiều_values):.Hàm tất cả () sẽ trả về true nếu tất cả các giá trị được chỉ định nằm trong danh sách và sai., e.g. if all(value in my_list for value in multiple_values): . The all() function will return True if all of the specified values are in the list and False otherwise.

Làm thế nào để bạn thêm nhiều chỉ mục trong Python?

Tạo một đối tượng Multi Index (chỉ số phân cấp) có thể được tạo từ một danh sách các mảng (sử dụng multiindex. From_arrays ()), một mảng các bộ dữ()) hoặc DataFrame (sử dụng Multiindex.