Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在python列表理解中维护计数

在python列表理解中维护计数
EN

Stack Overflow用户
提问于 2012-02-08 16:54:19
回答 8查看 38.2K关注 0票数 24

在Python语言中,在列表理解过程中有没有像for循环那样可用的counter

通过这个例子,我需要一个计数器的原因就更清楚了:

我希望做到以下几点:

初始列表:['p', 'q', 'r', 's']

所需列表:[(1, 'P'), (2, 'Q'), (3, 'R'), (4, 'S')]

在所需列表中,每个元组的第一个元素都是序数。如果它只是平面列表,我可以使用zip来实现这一点。但是,我正在处理的列表是嵌套的,三层深(考虑分层数据),并且它是通过列表理解生成的。

所以,我想知道有什么方法可以在列表理解过程中引入这些序数。如果不是,最好的解决方案是什么?

附注:这里的小写字母被转换成大写字母,但这不是问题的一部分,可以把它看作是数据转换。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
allObj = Category.objects.all()

tree =[(_, l1.name, [(__, l2.name, [(___, l3.name) for l3 in allObj if l3.parentid == l2.categoryid]) for l2 in allObj if l2.parentid == l1.categoryid]) for l1 in allObj if l1.parentid == None]

allObj包含来自表类别的数据,而表类别又包含以邻接表形式表示的分层数据。

我把_放在我需要序数的地方。请注意,该列表是嵌套的,因此在由1、2和3个_表示的每个级别上都会有一个单独的计数器。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-02-08 16:56:39

最基本的情况

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[(i, x) for i, x in enumerate(some_list, 1)]

使用if语句应用筛选器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[(i, x) for i, x in enumerate(some_list, 1) if i > 2]

或者像这样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[(i, x) for i, x in enumerate(some_list, 1) if x != 'p']

一句忠告

大多数情况下,您不需要这样做。相反,您只需在需要枚举的地方调用enumerate(some_list, 1),例如在for循环中。

票数 61
EN

Stack Overflow用户

发布于 2017-09-07 15:45:30

当我偶然发现这个答案的时候,我正在寻找一些稍微不同的东西。

我的情况是根据列表理解中的条件进行计数。为了防止它对其他人有用,我是这样解决它的:

import itertools counter = itertools.count(0) [(next(counter), x) for x in some_list if x != 'p']

这样,计数器将只在满足条件时递增,而不是在每次迭代时递增。

票数 16
EN

Stack Overflow用户

发布于 2012-02-08 17:09:13

正如在其他答案中所显示的,标准库为您提供enumerate,这意味着您可能甚至不需要如下列表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[(1, 'P'), (2, 'Q'), (3, 'R'), (4, 'S')]

因为每次需要将字母与其位置相关的数字绑定时,只需调用enumerate即可。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> low = ['p', 'q', 'r', 's']
>>> upp = [c.upper() for c in low]
>>>
>>> for i,c in enumerate(upp, 1):
...     print(i,c)
...
1 P
2 Q
3 R
4 S

这只是一个例子,也许你真的需要这样的列表。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9197844

复制
相关文章
如何理解和使用Python中的列表
Python有6个序列的内置类型,但最常见的是列表和元组。今天我们就来讲讲列表。
小土豆Yuki
2020/06/15
7K0
实操指南|关于Python中的列表理解
列表理解通常在Python中用于编写单行语句,这些语句通过循环访问可迭代对象来创建新列表或字典。本文将首先介绍有关for循环在Python中的工作原理,然后说明如何在Python中使用列表理解。
用户6543014
2020/02/25
1.5K0
【说站】splitlines在python中返回列表
2、返回一个是否包含换行符的列表,如果参数keepends为False,则不包含换行符。
很酷的站长
2022/11/23
2.4K0
注意!​在python中不要所有操作都用列表
列表十分方便、它的结构清晰灵活。而且学习列表推导有着一种纯粹的乐趣,就像是中了数据类型中的头奖。
昱良
2020/02/27
2K0
在Python中,不用while和for循环遍历列表
s1=s.encode(encoding='utf-8').decode('unicode_escape')
用户2337871
2019/07/19
5.5K0
Python中的计数 - Counter类
在很多场景中经常会用到统计计数的需求,比如在实现 kNN 算法时统计 k 个标签值的个数,进而找出标签个数最多的标签值作为最终 kNN 算法的预测结果。Python内建的 collections 集合模块中的 Counter 类能够简洁、高效的实现统计计数。
触摸壹缕阳光
2020/07/22
2.2K0
Python3--中括号"[]"与冒号":"在列表中的作用
如 : list[ : n]表示从第0个元素到第n个元素(不包括n),list[1: ] 表示该列表中的第1个元素到最后一个元素
狼啸风云
2019/09/25
4.9K0
请停止在Python中无休止使用列表
当你学习不熟悉的新东西的时候,一旦发现某样东西有效,那么你就会坚持使用它而放弃探索更多的可能性。在Python中,那样东西就是列表。
HuangWeiAI
2020/11/17
2.8K0
请停止在Python中无休止使用列表
Python中的列表
列表 是一种用于保存一系列有序项目的集合,也就是说,你可以利用列表保存一串项目的序 列。想象起来也不难,你可以想象你有一张购物清单,上面列出了需要购买的商品,除开在 购物清单上你可能为每件物品都单独列一行,在 Python 中你需要在它们之间多加上一个逗 号。
benym
2022/07/14
4.9K0
python中的列表
列表是由一系列特定顺序排列的元素组成。你可以创建包含字母表中所有字母,数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如letters、digits或names)是个不错的主意。
狼啸风云
2019/01/28
5.5K0
Python中的列表
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。 1.列表 数组:存储同一种数据类型的集合 scores = [12,23,45] 列表(打了激素的数组):可以存储任意数据类型
py3study
2020/01/10
5.2K0
重要!理解Python列表索引和切片
这是一个重要的话题,因为我们将在pandas中大量使用这些技术。Python列表索引和切片是指如何从列表或类似数组的对象中选择和筛选数据。这里讨论的技术也适用于元组。
fanjy
2022/04/13
2.5K0
重要!理解Python列表索引和切片
在 Python 中合并列表的5种方法
当我开始学习 Python 的时候,并不知道它是多么的灵活和优雅。在阅读和编写了大量代码之后,我越来越喜欢 Python。因为即使是一个普通的操作也可以有许多不同的实现。合并列表是一个很好的例子,至少有5种方法可以做到这一点。本文将介绍它们,并展示在引擎盖下的技巧。
AI算法与图像处理
2021/04/21
4.1K0
在 Python 中合并列表的5种方法
内存中的Python:Python引用计数指南
Python中的变量是内存引用。如果输入x = [1,2]时会发生什么?[1,2]是对象。
天道Vax的时间宝藏
2021/08/11
1.4K0
【译】CSS列表,标记,计数器
在CSS中,列表具有特定的属性,为我们提供了标准的列表样式。例如,无序列表的列表项符号是圆点,有序列表的是编号。我之所以会去详细研究列表,主要来源于为MDN整理::marker伪元素的文档。这个伪元素在已经发布的Firefox 68版本中所支持,通过使用::marker伪元素,我们可以用列表做一些有趣的事情。
腾讯IVWEB团队
2020/06/28
1.2K0
Solidity 优化 - 如何维护排序列表
本文我们探索和讨论在以太坊独特的 EVM 成本模型下编写高效的 Solidity 代码的数据结构和实现技术。读者应该已经对 Solidity 中的编码以及 EVM 的总体工作方式所有了解。
Tiny熊
2020/11/03
1.4K0
Solidity 优化 - 如何维护排序列表
Python中的列表(1)
  所以说访问列表的元素,可以在列表名后加方括号,方括号内输入索引,即可访问对应索引的元素。(ps:索引从0开始)
py3study
2020/01/16
3.4K0
python中列表的使用
情景:列表应该是数据处理时经常使用到一种数据类型,可以有序、组合的操作值存储,是很实用的函数。。。这是最后一篇整理的笔记,发现排版很浪费时间,也得不到交流,还是用类似onenote写笔记的方式快。
py3study
2020/01/14
5.3K0
[编程经验] Python 中列表list介绍
列表是Python中非常重要的一种数据结构,使用频率非常高,本文主要介绍对于学习python的新手来说,需要掌握的一些基础知识。 1. 创建列表 列表用中括号来表示,元素之间用逗号隔开,这种类型的数据
用户1622570
2018/04/11
1.3K0
[编程经验]  Python 中列表list介绍
点击加载更多

相似问题

带计数的Python列表理解

14

Python中的计数、排序和列表理解

32

Python -列表理解中的计数器

12

在Python中维护访问计数排序列表的有效方法

52

Python:在列表理解本身中引用列表理解?

34
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文