我試圖計算列表中一個字符串的長度超過20個字符的次數。Python 2.7計數字符串的數量
我想使用的計數方法,這就是我不斷收到:
>>> for line in lines:
x = len(line) > 20
print line.count(x)
編輯:對不起,壓痕錯誤之前
我試圖計算列表中一個字符串的長度超過20個字符的次數。Python 2.7計數字符串的數量
我想使用的計數方法,這就是我不斷收到:
>>> for line in lines:
x = len(line) > 20
print line.count(x)
編輯:對不起,壓痕錯誤之前
想你指的這個,
>>> s = ['sdgsdgdsgjhsdgjgsdjsdgjsd', 'ads', 'dashkahdkdahkadhaddaad']
>>> cnt = 0
>>> for i in s:
if len(i) > 20:
cnt += 1
>>> cnt
2
或
>>> sum(1 if len(i) > 20 else 0 for i in s)
2
或
>>> sum(len(i) > 20 for i in s)
2
在這種情況下,
x = len(line) > 20
x是一個布爾值,在一個字符串,它不能被 「計數」。
>>> 'a'.count(False)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: expected a character buffer object
您需要實際擁有一個字符串或類似的類型(統一碼等)才能計入行中。
我建議使用一個簡單的計數器爲你的目的:
count = 0
for line in lines:
if len(line) > 20:
count += 1
print count
>>> for line in lines:
... x = len(line) > 20
這裏,x
是一個布爾型(True
或在Python False
),因爲len(line) > 20
是一個邏輯表達式。
您可以通過調試找出問題:
>>> for line in lines:
... x = len(line) > 20
... print x
此外,x = len(line) > 20
不是一個條件表達式。您需要使用if
表達式:
>>> count = 0
>>> for line in lines:
... if len(line) > 20:
... count += 1
...
>>> print count
您有錯誤的縮進以及代碼。 – DhruvPathak
你在哪裏見過像這樣使用'.count'方法? 'str.count(x)'返回'x'的非重疊事件的數量。這裏你的'x'或者是'True'或者'False',即。甚至沒有一個str。這就是爲什麼你得到這個錯誤信息。 –
如何使用'len(filter(lambda x:len(x)> 20,lines))'? – Pant