1
16
不得不多次重复列表并不优雅。 我可能会创建一个允许执行以下操作的函数:
起点是这样的:
顺便说一句,“Itertools食谱”和你的Alt4非常相似。
|
2
6
ALT 4!但也许您应该将代码重构为一个函数,该函数接受一个包含可除数字(2和3)的参数。然后你可以有一个更好的函数名。
|
3
3
你可以用
它过滤一个列表(或者严格地说是一个iterable),生成一个只包含指定函数计算结果为true的项的新列表。
这很好,因为它允许您将统计逻辑保存在函数中,并且
|
4
2
我会选择你的一个小变种(alt 4):
如果要更改Count的功能,请在一个位置更改其实现。 注意:由于谓词很复杂,您可能希望在函数中而不是lambda中定义它们。因此,您可能希望将所有这些内容放在类中,而不是全局命名空间中。 |
5
1
好吧,你可以做一个列表理解/表达式来得到一组元组,在它们中进行stat测试,然后将其减少到可以得到和。
使用生成器表达式等应该意味着您将只运行一次迭代器(除非reduce有什么奇怪的地方?)基本上你会做地图/缩小… |
6
1
真布尔值被强制为单位整数,假布尔值被强制为零整数。因此,如果您愿意使用scipy或numpy,请为序列的每个元素创建一个整数数组,每个数组包含每个测试的一个元素,并对数组求和。例如。
|
8
0
不是像你所寻找的那样简单,而是更有效,它实际上与任何一个不可重复的,而不仅仅是你可以循环多次的iterables一起工作,并且你可以在不进一步复杂化的情况下扩展要检查的内容:
|
9
0
|
10
0
受上述OO刺伤的启发,我也不得不试着用一个(尽管这对我要解决的问题来说太过分了:)
|
11
0
alt 3,因为它不使用与“点击数”成比例的内存。考虑到像xrange(1万亿)这样的病态案例,其他许多提供的解决方案都将严重失败。 |
12
0
这里的想法是使用约简来避免重复的迭代。此外,如果内存对您来说是一个问题,那么这不会创建任何额外的数据结构。你从一本字典开始计算你的计数器(
如果您想计算比除数更复杂的东西,最好使用更面向对象的方法(具有相同的优点),封装用于统计提取的逻辑。
请指出任何错误。 @Henrik:我认为第一种方法不太容易维护,因为您必须在一个地方控制字典的初始化,在另一个地方更新,并且必须使用字符串引用每个stat(而不是具有属性)。在这种情况下,我不认为OO是多余的,因为您说过谓词和对象在您的应用程序中会很复杂。事实上,如果谓词真的很简单,我甚至不用费心使用字典,一个固定大小的列表就可以了。干杯: |
A.E · python中具有多个if语句的列表理解 2 年前 |
Aaryan · Python列表:如果没有前缀,则添加前缀 2 年前 |
Semisonic · 如何在列表理解中添加额外的中间步骤? 2 年前 |
Sun Jar · 用Python填写大小不均的列表 2 年前 |
Shuvashish Roy · 将字典列表展平为数据帧列 2 年前 |
MarkS · 列中列表中元素的值计数 2 年前 |