你能帮忙,e,python的列表吗?

can you help ,e with the list of python?

提问人:Valeria Gini 提问时间:1/10/2023 更新时间:1/10/2023 访问量:57

问:

嗨,我是一名大学生,我必须做一个程序。 给定一个字母列表,我不得不说这是最长序列的长度。 例如,如果我有以下列表 [“C”、“A”、“G”、“T”、“A”、“C”、“A”、“A”,],我必须找到的解决方案是以下 3,“G”,因为 G 已经连续重复了 3 次。有人可以帮我吗?谢谢

我需要上大学

Python 列表 并发 序列 powerschool

评论

4赞 Mark Ransom 1/10/2023
你真正“需要”的是弄清楚如何自己做到这一点。这就是大学的目的。
0赞 Denis Artyushin 1/10/2023
显示您的解决方案尝试。存在哪些问题?
1赞 TheFlyingObject 1/10/2023
你有没有试过想过你将如何解决它?拿一张纸,写下你为解决这个问题而要做的步骤。然后将其转换为代码。
1赞 NelsonGon 1/10/2023
这回答了你的问题吗?在 Python 列表中查找连续重复的字符串

答:

-2赞 tomasborrella 1/10/2023 #1

您可以使用集合。计数器如下:

from collections import Counter

my_list = ["C", "A", "G", "G", "G", "T", "A", "C", "A", "A"]

counter = Counter(my_list)

现在,您可以打印计数器来查看有序列表:

print(counter)

结果将是:

Counter({'A': 4, 'G': 3, 'C': 2, 'T': 1})

或者,您还可以查询特定键以了解获取计数:

print(counter['G'])

评论

0赞 NelsonGon 1/10/2023
这并没有解释我所理解的重复。比如说,一个 G 不在序列中,这仍然会计算所有出现的 G,而不是如果它们按顺序出现,例如["C", "A", "G", "G", "G", "T", "A", "C", "A", "A","G"]
1赞 joanis 1/10/2023
最好不要回答明显的作业问题,因为发帖人显然甚至没有尝试自己解决它。
0赞 tomasborrella 1/10/2023
你们俩都是对的!@NelsonGon,我读问题太快了。我的错误。
1赞 tomasborrella 1/10/2023
@joanis,当很明显没有足够的努力时,我将尽量不再回答任何问题。谢谢两位
0赞 Goku - stands with Palestine 1/10/2023 #2

你可以使用itertools.groupby

文档链接:itertools.groupby

import itertools

lst = ["C", "A", "G", "G", "G", "T", "A", "C", "A", "A"]
result = []
for item, group in itertools.groupby(lst):
    count = sum(1 for _ in group)
    result.append((item,count),)

print(result)
#[('C', 1), ('A', 1), ('G', 3), ('T', 1), ('A', 1), ('C', 1), ('A', 2)]

#For maximum you can do:

m=max(result,key=lambda x:x[1])
#('G', 3)

m[0]
#'G'