我需要一件简单的事情,但我不能这样做:
list = 'SBEDFG'
我需要输出:
[(S,B),(B,E),(E,D),(D,F),(F,G)]
这就是我的尝试:
[(list[ind],list[ind+1]) for ind,i in list]
但它给了我这个错误:
ValueError: need more than 1 value to unpack
你能帮帮我吗?谢谢!
答案 0 :(得分:5)
您可以像这样使用zip()
函数:
>>>l = 'SBEDFG'
>>>zip(l,l[1:])
[('S', 'B'), ('B', 'E'), ('E', 'D'), ('D', 'F'), ('F', 'G')]
使用Python 3.X,您需要将zip
结果转换为list
:
#Python 3.X
>>>l = 'SBEDFG'
>>>list(zip(l,l[1:]))
[('S', 'B'), ('B', 'E'), ('E', 'D'), ('D', 'F'), ('F', 'G')]
使用列表理解,我会使用range()
函数:
>>>[(l[i],l[i+1]) for i in range(len(l)-1)]
[('S', 'B'), ('B', 'E'), ('E', 'D'), ('D', 'F'), ('F', 'G')]
希望这有帮助!
答案 1 :(得分:2)
试试这个
>>> [(list[i-1], list[i]) for i in range(1, len(list))]
[('S', 'B'), ('B', 'E'), ('E', 'D'), ('D', 'F'), ('F', 'G')]
答案 2 :(得分:0)
>>>b=[]
>>> for ind,i in enumerate(list):
... if ind < len(list)-1:
... b.append((list[ind],list[ind+1]))
...
>>> print b
[('S', 'B'), ('B', 'E'), ('E', 'D'), ('D', 'F'), ('F', 'G')]