Nói rằng tôi có danh sách này ở đây:
Làm thế nào tôi có thể xóa các chỉ mục nói 5 và 6 cùng một lúc?POP không chấp nhận nhiều giá trị. Làm thế nào khác tôi làm điều này?
Một noa 3451 Huy hiệu vàng3 Huy hiệu bạc10 Huy hiệu đồng1 gold badge3 silver badges10 bronze badges Đã hỏi ngày 3 tháng 7 năm 2012 lúc 1:06Jul 3, 2012 at 1:06
0 Bạn cần phải làm điều này trong một vòng lặp, không có hoạt động tích hợp để xóa một số chỉ mục cùng một lúc. Ví dụ của bạn thực sự là một chuỗi các chỉ mục liền kề, vì vậy bạn có thể làm điều này:
trong đó loại bỏ lát cắt bắt đầu từ 2 và kết thúc ngay trước 6. Không rõ ràng từ câu hỏi của bạn liệu nói chung bạn có cần xóa một bộ sưu tập các chỉ mục tùy ý hay nếu nó sẽ luôn là một chuỗi tiếp giáp. Nếu bạn có một bộ sưu tập các chỉ mục tùy ý, thì:
Lưu ý rằng bạn cần xóa chúng theo thứ tự ngược lại để bạn không loại bỏ các chỉ mục tiếp theo. Đã trả lời ngày 3 tháng 7 năm 2012 lúc 1:08Jul 3, 2012 at 1:08
Ned Batchelderned BatchelderNed Batchelder 353K71 Huy hiệu vàng553 Huy hiệu bạc650 Huy hiệu Đồng71 gold badges553 silver badges650 bronze badges 7
Example:
Đã trả lời ngày 3 tháng 7 năm 2012 lúc 1:09Jul 3, 2012 at 1:09
Igor Chubinigor ChubinIgor Chubin 59K10 Huy hiệu vàng117 Huy hiệu bạc139 Huy hiệu Đồng10 gold badges117 silver badges139 bronze badges 2
Không có nhiều gợi ý về hiệu suất cho các cách khác nhau vì vậy tôi đã thực hiện một bài kiểm tra về việc loại bỏ 5000 mục từ 50000 trong cả 3 cách tiếp cận khác nhau và đối với tôi Numpy là người chiến thắng (nếu bạn có các yếu tố phù hợp với Numpy):
Đây là mã tôi đã tính thời gian (trong chuyển đổi hàm thứ ba từ/sang danh sách có thể bị xóa nếu làm việc trực tiếp trên các mảng numpy là OK):
Đã trả lời ngày 10 tháng 12 năm 2016 lúc 20:09Dec 10, 2016 at 20:09
AndrisandrisAndris 8737 Huy hiệu bạc14 Huy hiệu đồng7 silver badges14 bronze badges 2 Nếu bạn có thể sử dụng Numpy, thì bạn có thể xóa nhiều chỉ số:
Và nếu bạn sử dụng 7, bạn có thể kết hợp các lát với các chỉ số riêng lẻ:
Tuy nhiên, việc xóa không phải là 8, vì vậy bạn phải gán cho nó.Đã trả lời ngày 3 tháng 7 năm 2012 lúc 9:22Jul 3, 2012 at 9:22
Fraxelfraxelfraxel 33.5K11 Huy hiệu vàng95 Huy hiệu bạc99 Huy hiệu đồng11 gold badges95 silver badges99 bronze badges Nếu họ tiếp giáp, bạn có thể làm
Nếu bạn muốn xóa các chỉ mục không liên tục, thì đó là một chút khó khăn hơn.
Levon Huy hiệu vàng 133K3333 gold badges198 silver badges187 bronze badges Đã trả lời ngày 3 tháng 7 năm 2012 lúc 1:08Jul 3, 2012 at 1:08
Ned Batchelderned BatchelderAntimony 353K71 Huy hiệu vàng553 Huy hiệu bạc650 Huy hiệu Đồng10 gold badges100 silver badges103 bronze badges 3 0Đã trả lời ngày 3 tháng 7 năm 2012 lúc 1:09
Igor Chubinigor ChubinDec 12, 2016 at 9:34
6 59K10 Huy hiệu vàng117 Huy hiệu bạc139 Huy hiệu Đồng 1Không có nhiều gợi ý về hiệu suất cho các cách khác nhau vì vậy tôi đã thực hiện một bài kiểm tra về việc loại bỏ 5000 mục từ 50000 trong cả 3 cách tiếp cận khác nhau và đối với tôi Numpy là người chiến thắng (nếu bạn có các yếu tố phù hợp với Numpy):Jul 2, 2017 at 14:16
7.5 giây cho danh sách được liệt kê hiểu [4,5 giây trên một PC khác]Lars 0,08 giây để xóa các mục theo thứ tự ngược lại [0,017 (!) Giây]2 gold badges13 silver badges26 bronze badges 0,009 giây cho numpy.delete [0,006 giây] Đây là mã tôi đã tính thời gian (trong chuyển đổi hàm thứ ba từ/sang danh sách có thể bị xóa nếu làm việc trực tiếp trên các mảng numpy là OK): 2Đã trả lời ngày 10 tháng 12 năm 2016 lúc 20:09the indexes of elements you want to pop. It's robust enough that the order of the list doesn't matter. 3Andrisandris
AntinonionantimonJul 7, 2016 at 19:48
|