我应该如何从python中的列表中获取对?

时间:2010-05-13 19:59:55

标签: python list

假设我有一个如下所示的列表:

['item1', 'item2', 'item3', 'item4', 'item5', 'item6', 'item7', 'item8', 'item9', 'item10']

使用Python,我如何从中获取对,其中每个项目都包含在一对与之前和之后的项目中?

['item1', 'item2']
['item2', 'item3']
['item3', 'item4']
['item4', 'item5']
['item5', 'item6']
['item6', 'item7']
['item7', 'item8']
['item8', 'item9']
['item9', 'item10']

看起来像是我可以一起破解的东西,但我想知道是否有人拥有他们之前使用的优雅解决方案?

3 个答案:

答案 0 :(得分:11)

快速而简单的方法就是:

a = ['item1', 'item2', 'item3', 'item4', 'item5', 'item6', 'item7', 'item8', 'item9', 'item10']

print zip(a, a[1:])

将产生以下结果:

[('item1', 'item2'), ('item2', 'item3'), ('item3', 'item4'), ('item4', 'item5'), ('item5', 'item6'), ('item6', 'item7'), ('item7', 'item8'), ('item8', 'item9'), ('item9', 'item10')]

答案 1 :(得分:3)

查看itertools documentation中的pairwise食谱。

答案 2 :(得分:1)

这应该可以解决问题:

[(foo[i], foo[i+1]) for i in xrange(len(foo) - 1)]