相关疑难解决方法(0)

2149
推荐指数
17
解决办法
65万
查看次数

在块中迭代列表的最"pythonic"方法是什么?

我有一个Python脚本,它将整数列表作为输入,我需要一次使用四个整数.不幸的是,我无法控制输入,或者我将它作为四元素元组列表传入.目前,我正在以这种方式迭代它:

for i in xrange(0, len(ints), 4):
    # dummy op for example code
    foo += ints[i] * ints[i + 1] + ints[i + 2] * ints[i + 3]
Run Code Online (Sandbox Code Playgroud)

它看起来很像"C-think",这让我怀疑有更多的pythonic方式来处理这种情况.迭代后会丢弃该列表,因此无需保留.也许这样的事情会更好吗?

while ints:
    foo += ints[0] * ints[1] + ints[2] * ints[3]
    ints[0:4] = []
Run Code Online (Sandbox Code Playgroud)

但是,仍然没有"感觉"正确.: - /

相关问题:如何在Python中将列表拆分为大小均匀的块?

python optimization loops list chunks

449
推荐指数
15
解决办法
12万
查看次数

Python中的生成器和for循环

所以我有一个生成器函数,看起来像这样.

def generator():
    while True:
        for x in range(3):
            for j in range(5):
                yield x
Run Code Online (Sandbox Code Playgroud)

在我加载此函数并多次调用"next"之后,我希望它能够产生值

0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 0 0 0 0 0 ...

但它只是一直产生0.这是为什么?

>>> execfile("test.py")
>>> generator
<function generator at 0x10b6121b8>
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
Run Code Online (Sandbox Code Playgroud)

python generator

22
推荐指数
2
解决办法
2775
查看次数

何时使用__iter __()和iter()?

假设我有一个实现__iter__()函数的类,首选使用iter(obj)还是obj.__iter__()直接调用?除了使用magic函数少输入5个字符之外,还有什么真正的区别?

相比之下:对于next()__next__()我可以看到在magic函数中具有默认值的优点。

python

4
推荐指数
1
解决办法
317
查看次数