2016-04-07 13 views
40

Trong mã của tôi:Tại sao "www" .count ("ww") trả về 1 chứ không phải 2?

>> s = 'abacaba' 
>> s.count('aba') 
>> 2 

Đối với các mã trên tôi nhận được câu trả lời đúng là 'aba' xảy ra 2 lần trong chuỗi s.

Nhưng đối với các trường hợp sau đây:

>> s = 'www' 
>> s.count('ww') 
>> 1 

Trong trường hợp này tôi mong rằng sẽ trở lại s.count('ww')2. Nhưng nó trả về 1.

Tại sao?

Trả lời

165

Đọc docs:

Return số lượng (không chồng chéo) lần xuất hiện của chuỗi phụ trong chuỗi s[start:end]. Mặc định cho bắt đầu và kết thúc và giải thích các giá trị tiêu cực là giống như cho lát.

Vì "ww" được đối sánh đầu tiên, nó xuất phát từ "w" thứ ba và không khớp với "ww".

+2

Lưu ý rằng câu trả lời này đề cập đến hàm 'string.count()' không được chấp nhận, không phải phương thức ['str.count()' tương đương] (https://docs.python.org/2/library/stdtypes. html # str.count). –

34

string.count(s, sub[, start[, end]]):

Return số lượng (không chồng chéo) lần xuất hiện của chuỗi phụ trong chuỗi s [bắt đầu: cuối]. Mặc định cho bắt đầu và kết thúc và giải thích các giá trị tiêu cực là giống như cho lát.

nguồn: https://docs.python.org/2/library/string.html

+3

Lưu ý rằng câu trả lời này đề cập đến hàm 'string.count()' không được chấp nhận, không phải là phương thức ['str.count()' tương đương] (https://docs.python.org/2/library/stdtypes.html# str.count). –

9

Chỉ cần cố gắng để nghĩ rằng nó thích:

Trong từ này: "abacaba", có bao nhiêu không chồng chéo "aba" Nói cách nào bạn thấy? Tôi thấy 2. Và tôi cũng thấy chữ "c".

Trong từ này: "www" có bao nhiêu không chồng chéo từ "ww" mà bạn thấy? Tôi thấy 1. Và tôi cũng thấy một "w".

Để có giải thích tốt hơn, hãy nghĩ rằng bạn đang xóa cá thể khi bạn thấy.

Đối với "abacaba" bạn thấy "aba" và xóa nó. bây giờ có "caba", bạn thấy "aba" một lần nữa và xóa nó. bây giờ bạn chỉ nhận được "c". bạn thấy "aba" hai lần. Nó giống với "www", bạn thấy "ww" một lần và xóa nó. bây giờ bạn chỉ thấy "w". bạn đã thấy "ww" một lần duy nhất.

Điều đó có ý nghĩa.

+39

trực giác là một thay thế kém cho việc đọc tài liệu –

+4

Nó cũng không chính xác; "bạn thấy bao nhiêu từ" ww "? - Tôi thực sự thấy 2, và 3 "w" s. Bạn có thể phục hồi nó tốt hơn và chính xác hơn nhiều. – Maroun

+0

Ok, hãy để tôi giải thích.nghĩ rằng bạn đang xóa các trường hợp khi bạn nhìn thấy. Đối với "abacaba" bạn thấy "aba" và xóa nó. bây giờ có "caba", bạn thấy "aba" một lần nữa và xóa nó. bây giờ bạn chỉ nhận được "c". bạn thấy "aba" hai lần. Nó giống với "www", bạn thấy "ww" một lần và xóa nó. bây giờ bạn chỉ thấy "w". bạn đã thấy "ww" một lần duy nhất. –

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