如何检查可迭代对象的内容?

时间:2014-07-01 14:57:58

标签: python iterable

已经存在关于checking whether an object is iterable的问题,但有时我需要了解可迭代对象的外观。例如,我在SO上发现我可以执行以下操作:

sqlite_cursor.execute('SELECT * FROM mytable')
csv_writer.writerows(sqlite_cursor)

这有效,但是我无法理解如何在不偷看db_cursor对象的情况下自己想出这个解决方案,以确定它是否是列表列表(这样我就可以给{{1 }})。

我如何偷看这样的物体?

1 个答案:

答案 0 :(得分:1)

如果我想在python的迭代中达到峰值,那么这就是我使用的习语:

import itertools

peek = iterable.next()
iterable = itertools.chain([peek], iterable)

你可以像这样制作一个函数:

def peek(iterable):
    peek = iterable.next()
    return peek, itertools.chain([peek], iterable)

使用是这样的:

iterable = iter([1,2,3])
peek, iterable = peek(iterable)
print "peek: %s" % peek
print "iterable: %s " % list(iterable)

输出:

peek: 1
iterable: [1, 2, 3]