当前位置: 首页 > 编程笔记 >

python中计算一个列表中连续相同的元素个数方法

伯博
2023-03-14
本文向大家介绍python中计算一个列表中连续相同的元素个数方法,包括了python中计算一个列表中连续相同的元素个数方法的使用技巧和注意事项,需要的朋友参考一下

最简单的例子:

a = [1,1,1,1,2,2,2,3,3,1,1,1,3]
# 问:计算a中最多有几个连续的1

很明显,答案是4

如果用代码实现,最先想到的就是itertools:

import itertools
a = [1,1,1,1,2,2,2,3,3,1,1,1,3]
print max([len(list(v)) for k,v in itertools.groupby(a)])

但是如果不想用itertools呢?

可以尝试以下的办法,效率还比itertools高一个数量级!

import random
import time
import itertools

random.seed(0)
a = ['1' if random.random()>0.4 else ' ' for i in range(1000000)]

t = time.time()
print max([len(x) for x in ''.join(a).split()])
print time.time()-t

t = time.time()
print max([len(list(v)) for k,v in itertools.groupby(a)])
print time.time()-t

#####
# 27
# 0.050999879837
# 27
# 0.450000047684

以上这篇python中计算一个列表中连续相同的元素个数方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍计算Python列表中元素的出现,包括了计算Python列表中元素的出现的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们给出了一个列表和一个字符串。我们需要查找给定字符串作为元素存在于列表中的次数。 带柜台 来自collections模块的counter函数将为我们提供列表中每个元素的计数。从计数结果中,我们只能提取公平的那个指数,该指数与我们要搜索的元素的值匹配。 示例 输

  • 问题内容: 给出以下列表: 我想将[a]的每个元素重复其在[b]中的对应位置的编号,以产生此结果: 即0发生1次,5发生2次,1发生1次。 问题答案: 内容如下: -重复elem次 从两个列表中组成一个2元组的列表,将每个元素与另一个列表中的对应元素配对。这为您提供了用例中需要传递给的确切信息。 -将迭代器的结果列表展平为单个值列表。您既可以像我一样,也可以像马丁·彼得斯那样。

  • 问题内容: 我正在尝试创建一个列(“ consec”),该列将连续计数另一个(“二进制”)中的连续值,而不使用循环。这是预期的结果: 但是这个 导致… 我看到了其他使用分组或排序的帖子,但不幸的是,我看不到如何对我有用。在此先感谢您的帮助。 问题答案: 您可以使用compare-cumsum-groupby模式(我 确实 需要解决这个问题才能编写文档),最后是: 之所以有效,是因为首先我们得到了要

  • 本文向大家介绍python 统计一个列表当中的每一个元素出现了多少次的方法,包括了python 统计一个列表当中的每一个元素出现了多少次的方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 运行结果: 以上这篇python 统计一个列表当中的每一个元素出现了多少次的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题:我希望编写一个脚本,同时循环两个列表,并将列表1中的日期替换为列表2中的日期。因此,很明显,您将使用清单2中的前70个日期替换清单1中的70个日期。之后,我希望将修改后的list1写入一个。txt文件。 我试过了,但我完全卡住了。我是Python的超级noob。

  • 问题内容: 我有一个包含字符串的元组列表,例如: 现在,我希望将一个元组中的每个字符串连接起来,以创建一个用空格分隔的字符串列表。我使用以下方法: 工作正常。 但是,我有超过一百万个元组的列表。所以我的问题是,这种方法是否足够有效,或者有更好的方法呢?谢谢。 问题答案: 对于大量数据,您应该考虑是否 需要 将所有数据都保留在列表中。如果您一次处理每个字符串,则可以创建一个生成器,该生成器将产生每个