相关疑难解决方法(0)

在块中迭代列表的最"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中的多元组到双组元组?

拆分这个最好的方法是什么:

tuple = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
Run Code Online (Sandbox Code Playgroud)

进入这个:

tuples = [('a', 'b'), ('c', 'd'), ('e', 'f'), ('g', 'h')]
Run Code Online (Sandbox Code Playgroud)

假设输入始终具有偶数个值.

python tuples data-structures

11
推荐指数
3
解决办法
9147
查看次数

如何为Python迭代器编写寻呼机?

我正在寻找一种"浏览"Python迭代器的方法.也就是说,我想将一个给定的迭代器iterpage_size与另一个迭代器包装起来,该迭代器将把它作为一系列"页面"从iter返回.每个页面本身都是一个迭代器,最多包含page_size迭代.

我查看了itertools,我看到的最接近的是itertools.islice.在某些方面,我想要的是与itertools.chain相反- 而不是将一系列迭代器链接到一个迭代器中,我想将迭代器分解为一系列较小的迭代器.我期待在itertools中找到一个分页功能,但找不到.

我想出了以下的传呼器类和演示.

class pager(object):
    """
    takes the iterable iter and page_size to create an iterator that "pages through" iter.  That is, pager returns a series of page iterators,
    each returning up to page_size items from iter.
    """
    def __init__(self,iter, page_size):
        self.iter = iter
        self.page_size = page_size
    def __iter__(self):
        return self
    def next(self):
        # if self.iter has not been exhausted, return the next slice
        # I'm using …
Run Code Online (Sandbox Code Playgroud)

python iterator python-itertools

9
推荐指数
2
解决办法
2538
查看次数

从Python列表中获取n个项目组的惯用方法?

给出一个清单

A = [1 2 3 4 5 6]
Run Code Online (Sandbox Code Playgroud)

是否有任何惯用(Pythonic)方式迭代它就好像它一样

B = [(1, 2) (3, 4) (5, 6)]
Run Code Online (Sandbox Code Playgroud)

索引除外?感觉就像C的延续:

for a1,a2 in [ (A[i], A[i+1]) for i in range(0, len(A), 2) ]:
Run Code Online (Sandbox Code Playgroud)

我不禁觉得应该有一些聪明的黑客使用itertools或切片或其他东西.

(当然,一次两个只是一个例子;我想要一个适用于任何n的解决方案.)

编辑:在Python中一次迭代字符串2(或n)个字符,但即使是最干净的解决方案(使用zip接受)也不能很好地推广到更高的n而没有列表理解和*-notation.

python iteration

9
推荐指数
1
解决办法
4447
查看次数

如何一次遍历列表中的元素数量?

例如,我有这样的简单列表:

l = [1,2,3,4,5,6,7,8,9]
Run Code Online (Sandbox Code Playgroud)

我想以3个元素为一组迭代它:

1,2,3
4,5,6
7,8,9
Run Code Online (Sandbox Code Playgroud)

最简单的方法是什么?

python

-1
推荐指数
1
解决办法
88
查看次数