在迭代中获得一个元素和以下元素的优雅/高效方法

Bob*_*Gob 2 python list python-itertools

所以我有一个问题,我有一个iterable(字符串或列表在这里)喜欢string = "ABCDEFG",我想输出类似的东西

A-B
B-C
C-D
...
F-G
Run Code Online (Sandbox Code Playgroud)

所以我知道这有效(忘了处理indexError,但无论如何),但它很难看......

for i in range(len(myString)):
    element1 = myString[i]
    element2 = myString[i+1]
    print("theshit")
Run Code Online (Sandbox Code Playgroud)

有没有办法以更优雅/ pythonic的方式做到这一点?我认为itertools可以是一个解决方案,但我不知道它是如何工作的..

顺便说一句,我myString只需要这个循环所以也许生成器(不知道如何使用它,我还在学习)

谢谢 :)

Fre*_*abe 5

itertools.izip如果你用序列的尾部(你可以使用它itertools.islice)压缩你的序列,这可能是有用的:

>>> from itertools import islice, izip
>>> iterable = "abcdefg"
>>> for x in izip(iterable, islice(iterable, 1, None)): print x
...
('a', 'b')
('b', 'c')
('c', 'd')
('d', 'e')
('e', 'f')
('f', 'g')
Run Code Online (Sandbox Code Playgroud)