[英]How can I check the length of consecutive characters in a list in python?
基本上說我在 python 中有一個列表
lst = [6, 6, 7, 1, 1, 1, 1, 4, 1]
程序應返回 4,因為數字“1”以連續方式顯示 4 次。 順便說一句,數字 6 也以連續方式顯示,但程序應該獲得在連續時出現最多的數字
更多示例:
[6, 4, 4, 4, 1, 1, 7]
應該 output 3 因為“4”是連續的 3 次
我已經被這個問題困擾了一段時間了,有什么建議嗎?
groupby()
默認情況下將為您提供相同值的各個組:
> [list(g) for k, g in groupby(lst)]
[[6, 6], [7], [1, 1, 1, 1], [4], [1]]
您可以使用len
鍵將其傳遞給max()
以獲得最長的:
> from itertools import group-by
> lst = [6, 6, 7, 1, 1, 1, 1, 4, 1]
> max((list(g) for k, g in groupby(lst)), key=len)
[1, 1, 1, 1]
這是最長的分組,您可以從中獲得長度。 或者,您可以只構建一個長度列表並在沒有密鑰的情況下調用max
:
max(len(list(g)) for k, g in groupby(lst))
您可以使用list.count()
和set(list)
來提取唯一值,然后為每個唯一值登記計數。
lst = [6, 6, 7, 1, 1, 1, 1, 4, 1]
unique = set(lst)
count = [lst.count(k) for k in unique]
print(' unique: {} \n count: {} \n'.format(unique, count))
Output :
unique: {1, 4, 6, 7}
count: [5, 1, 2, 1]
使用numpy.unique
獲取唯一值及其各自的計數。
import numpy as np
unique, count = np.unique(lst, return_counts=True)
print(' unique: {} \n count: {} \n'.format(unique, count))
Output :
unique: [1 4 6 7]
count: [5 1 2 1]
使用Colections
中的Counter
。 這將返回一個字典,其中唯一值作為鍵,值作為它們各自的計數。
from collections import Counter
Counter(lst)
Output :
Counter({6: 2, 7: 1, 1: 5, 4: 1})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.