如何从列表中获取索引条目?

时间:2013-12-22 02:47:51

标签: python python-2.7

我有一个清单:

a=['a1','a2','a3','a4']

并希望按照以下顺序获取相邻列表条目,例如

a1 a2
a2 a3
a3 a4

我试过以下但是没有用。

for i,b in enumerate(a):
    w1=i[i]
    w2=i[i+1]
    print w1,w2

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

不同的选择:

将索引循环到长度减去1:

for i in xrange(len(a) - 1):
    print a[i:i+2]

或将列表和列表的切片压缩在第一个索引之后:

for window in zip(a, a[1:]):
    print window

或将列表和列表上的迭代器压缩在一起,提前一步:

a_iter = iter(a)
next(a_iter)
for window in zip(a, a_iter):
    print window

答案 1 :(得分:0)

这是一个通用的解决方案

def get_entries(a, size):
    return [a[i:i+size] for i in range(len(a) - (size - 1))]

a = ['a1','a2','a3','a4']
for i in range(1, 5):
    print get_entries(a, i)

<强>输出

[['a1'], ['a2'], ['a3'], ['a4']]
[['a1', 'a2'], ['a2', 'a3'], ['a3', 'a4']]
[['a1', 'a2', 'a3'], ['a2', 'a3', 'a4']]
[['a1', 'a2', 'a3', 'a4']]

答案 2 :(得分:0)

[(a[i],a[i+1]) for i in range(0, len(a) - 1)]

您的代码包含符号

i[i]

可能是一个错字,它不会执行,因为在你的代码中我是一个整数。稍作修改即可使原始代码正常工作:

for i in range(len(a)-1):
    w1=a[i]
    w2=a[i+1]
    print w1,w2