gpt4 book ai didi

python - 查找列表开头的相等元素的数量

转载 作者:太空宇宙 更新时间:2023-11-03 12:47:43 25 4
gpt4 key购买 nike

给定一个 python 列表,我想找出列表开头有多少个相等的元素。

示例输入:

x1 = ['a','a','b','c','a','a','a','c']
x2 = [1, 1, 1, 3, 1, 1, 1, 8]
x3 = ['foo','bar','foobar']

一些神奇的函数(或一个单行)会输出:

f(x1) = 2 # There are 2 'a' values in the beginning.
f(x2) = 3 # There are 3 1-values in the beginning.
f(x3) = 1 # Only 1 'foo' in beginning.

如果我这样做:

sum([1 if x=='a' else 0 for x in x1])

我只是得到 x1 中“a”的出现次数,而不是一行中前导值的数量。最好有一个不需要知道第一个值的单衬里。

最佳答案

itertools.groupby 可以帮助...

from itertools import groupby

def f(lst):
if_empty = ('ignored_key', ())
k, v = next(groupby(lst), if_empty)
return sum(1 for _ in v)

当然我们可以将它变成 1-liner(没有导入):

sum(1 for _ in next(groupby(lst), ('ignored', ()))[1])

但我不会真的推荐它。


演示:

>>> from itertools import groupby
>>>
>>> def f(lst):
... if_empty = ('ignored_key', ())
... k, v = next(groupby(lst), if_empty)
... return sum(1 for _ in v)
...
>>> f(x1)
2
>>> f(x2)
3
>>> f(x3)
1
>>> f([])
0

关于python - 查找列表开头的相等元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26795345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com