簡體   English   中英

如何檢查 python 列表中連續字符的長度?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM