我有一个清单:
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
有什么建议吗?
答案 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