Tôi có một danh sách các chuỗi.
A = [
'diều1.json',
'kite1.mapping.json',
'kite1.analyzer.json',
'diều2.json',
'kite3.mapping.json',
'kite3.mapping.mapping.json',
'kite3.mapping.analyzer.json',
]
Tôi cần tìm với .json
,.mapping.json
,.analyzer.json
Tiền tố công khai kết thúc.
đây,diều1
& diều3.mapping
Tất cả đều hài lòng. Nhưng diều2
Không, bởi vì nó chỉ bắt đầu bằng .json
Sự kết thúc.
Làm thế nào tôi có thể tìm thấy những thứ đó với tất cả.json
,.mapping.json
,.analyzer.json
Tiền tố kết thúc.
nếu đây là mật mã golf , Tôi có thể thắng:
def ew(sx):
return set([s[:-len(sx)] for s in A if s.endswith(sx)])
ew('.analyzer.json') & ew('.mapping.json') & ew('.json')
ôi()
duyệt vòng lặp hàm MỘT
, tìm tất cả các phần tử kết thúc bằng một hậu tố nhất định và loại bỏ hậu tố đó, trả về kết quả trong bộ sưu tập.
Bằng cách sử dụng điều này, tôi chỉ cần tính toán giao điểm của các bộ được tạo bởi mỗi hậu tố trong số ba hậu tố. (&
là toán tử giao lộ. )
Để cho ngắn gọn, tôi viết tắt “kết thúc bằng” là ôi
, viết tắt "hậu tố" là sx
.
sự biểu lộ s[:-len(sx)]
thể hiện"S
Chuỗi con của bắt đầu từ 0 đến len(sx)
ký tự từ cuối", có tác dụng cắt bỏ hậu tố ở cuối.
Tôi là một lập trình viên xuất sắc, rất giỏi!