Python - 如何从单个列表创建元组列表

时间:2018-06-12 03:06:14

标签: python

如何从单个python列表(例如B_tuple_list = [(3,2), (2,1), (1,0), (0,5), (5,4)])创建单个元组列表,例如A_python_list = [3, 2, 1, 0, 5, 4]

谢谢。

5 个答案:

答案 0 :(得分:3)

您可以使用list comprehension尝试以下内容:

a_list = [3, 2, 1, 0, 5, 4]
tuple_list = [(a_list[i], a_list[i+1]) for i in range(len(a_list)-1)]
print(tuple_list)

结果:

[(3, 2), (2, 1), (1, 0), (0, 5), (5, 4)]

答案 1 :(得分:3)

您也可以使用zip

l = [3, 2, 1, 0, 5, 4]
print(list(zip(l, l[1:])))
# [(3, 2), (2, 1), (1, 0), (0, 5), (5, 4)]

答案 2 :(得分:2)

itertools recipes中提供的解决方案几乎不使用任何中间存储:

from itertools import tee

def pairwise(iterable):
    a, b = tee(iterable)
    next(b, None)
    return list(zip(a, b))

print(pairwise([1, 2, 3, 4])) # [(1, 2), (2, 3), (3, 4)]

通过将强制转换移到list,可以使其返回一个轻量级迭代器。

答案 3 :(得分:1)

使用列表推导。

>>> a = [3, 2, 1, 0, 5, 4]
>>> b = [(a[x], a[x+1]) for x in range(len(a))]
>>> print b
[(3, 2), (2, 1), (1, 0), (0, 5), (5, 4)]

答案 4 :(得分:1)

使用 zip

a_list = [3, 2, 1, 0, 5, 4]
tuple_list = [(x, y) for x, y in zip(a_list, a_list[1:])]

# [(3, 2), (2, 1), (1, 0), (0, 5), (5, 4)]

或者简单地说,

tuple_list = list(zip(a_list, a_list[1:]))