提问人:Valeria Gini 提问时间:1/10/2023 更新时间:1/10/2023 访问量:57
你能帮忙,e,python的列表吗?
can you help ,e with the list of python?
问:
嗨,我是一名大学生,我必须做一个程序。 给定一个字母列表,我不得不说这是最长序列的长度。 例如,如果我有以下列表 [“C”、“A”、“G”、“T”、“A”、“C”、“A”、“A”,],我必须找到的解决方案是以下 3,“G”,因为 G 已经连续重复了 3 次。有人可以帮我吗?谢谢
我需要上大学
答:
-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'
上一个:依次优化 2 个循环
评论