python – 在列表中查找项目和重复项
发布时间:2021-01-17 06:04:48 所属栏目:Python 来源:互联网
导读:我正在使用 Python并考虑以下问题:给出一个列表,例如[1,0,-2,0,0,4,5,0,3]多次包含0的整数,我希望有这些0和每一个的索引是它出现在列表中的次数,直到出现不同的元素或列表结束. 给定l = [1,0,-2,0,0,4,5,0],函数将返回((1,1),(3,2),(7,1)).结果是一个元组列
我正在使用 Python并考虑以下问题:给出一个列表,例如[1,-2,4,5,3]多次包含0的整数,我希望有这些0和每一个的索引是它出现在列表中的次数,直到出现不同的元素或列表结束. 给定l = [1,0],函数将返回((1,1),(3,2),(7,1)).结果是一个元组列表.元组的第一个元素是给定元素的索引(在列表中),第二个元素是在不同元素出现或列表结束之前重复的次数. 天真地,我会写这样的东西: def myfun(l,x): if x not in l: print("The given element is not in list.") else: j = 0 n = len(l) r = list() while j <= (n-2): count = 0 if l[j] == x: while l[j + count] == x and j <= (n-1): count +=1 r.append((j,count)) j += count else: j += 1 if l[-1] == x: r.append((n-1,1)) return r 但我想知道是否会有更好的(更短的?)方式做同样的事情. 解决方法不是最漂亮的,但是单行:>>> import itertools >>> l=[1,0] >>> [(k[0][0],len(k)) for k in [list(j) for i,j in itertools.groupby(enumerate(l),lambda x: x[1]) if i==0]] [(1,1)] 首先,itertools.groupby(enumerate(l),lambda x:x [1])将按枚举(l)的第二项分组,但保留项的索引. 然后[list(j)for i,lambda x:x [1])if if == 0]将仅保留0值. 最后,需要最后一个列表理解因为list(j)使用了itertools对象. (编辑:十堰站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- python – 为什么pow(x,y)的时间复杂度为O(1),而x ** y为O(
- python – 没有Xcode的PyObjC教程
- python – django中的高效分页和数据库查询
- python – GTK标签包装在一个对话框中
- python – syncdb和迁移有什么区别?
- 格式化django中的电话号码
- python – 如何在seaborn的facetgrid中设置可读的xticks?
- python – 当content-type为“application / xml”时,如何使
- python – 向Numpy ndarray添加元数据注释
- python – 从scipy.stats … rvs和numpy.random的随机抽取之