从列表中提取值并生成元组

The*_*dor 2 python list-comprehension

我需要一个简单的事情,但我不能这样做:

list = 'SBEDFG'
Run Code Online (Sandbox Code Playgroud)

我需要作为输出:

[(S,B),(B,E),(E,D),(D,F),(F,G)]
Run Code Online (Sandbox Code Playgroud)

这是我试过的:

[(list[ind],list[ind+1]) for ind,i in list]
Run Code Online (Sandbox Code Playgroud)

但它给了我这个错误:

ValueError: need more than 1 value to unpack
Run Code Online (Sandbox Code Playgroud)

你能帮助我吗?谢谢!

Pau*_* Bu 5

你可以简单地使用这样的zip()函数:

>>>l = 'SBEDFG'
>>>zip(l,l[1:])
[('S', 'B'), ('B', 'E'), ('E', 'D'), ('D', 'F'), ('F', 'G')]
Run Code Online (Sandbox Code Playgroud)

使用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')]
Run Code Online (Sandbox Code Playgroud)

使用列表理解我会用range()函数来做 :

>>>[(l[i],l[i+1]) for i in range(len(l)-1)]
[('S', 'B'), ('B', 'E'), ('E', 'D'), ('D', 'F'), ('F', 'G')]
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!