2013-02-22 73 views
6

Tôi có một số danh sách như thế này:Cách tìm chỉ mục chuỗi trong danh sách bắt đầu bằng một số chuỗi con?

lines = [ 
    "line", 
    "subline2", 
    "subline4", 
    "line", 
] 

Và tôi muốn lấy danh sách các chỉ số của dòng mà bắt đầu với một số chuỗi.

tôi sử dụng phương pháp này:

starts = [n for n, l in enumerate(lines) if l.startswith('sub')] 

nhưng có lẽ ai biết cách tiếp cận đẹp hơn?

+0

Điều đó thật đẹp đối với tôi. – Blender

+0

Điều gì là sai với điều này? Một con trăn hoàn toàn hợp lệ của nó :) –

+0

@MarekKowalski Tôi nghĩ rằng mỗi khi chúng ta có thêm cách tiếp cận nhiệt tình :) – kharandziuk

Trả lời

1

Tôi biết đã lâu rồi kể từ khi câu hỏi này hoạt động, nhưng đây là một giải pháp khác trong trường hợp ai đó quan tâm.

cách của bạn có vẻ tốt, nhưng đây là một chiến lược tương tự, bằng cách sử dụng list.index() phương pháp:

starts = [lines.index(l) for l in lines if l.startswith('sub')] 

Theo như thời gian trôi, đồng hồ hai chức năng ở vào khoảng cùng (trung bình 1.7145156860351563e-06 giây cho bạn Giải pháp enumerate1.7133951187133788e-06 giây cho giải pháp .index() của tôi)

Các vấn đề liên quan