Python 使用zip将不同结构的数据组织到元组列表中

Python 使用zip将不同结构的数据组织到元组列表中,python,python-2.7,zip,tuples,Python,Python 2.7,Zip,Tuples,考虑以下数据: x = [(1,1,1),(2,2,2),(3,3,3),(4,4,4)] y = ['a','b','c','d'] 我希望实现以下结构: [(1,1,1,'a'),(2,2,2,'b'),(3,3,3,'c'),(4,4,4,'d')] 目前,我正在这样做: zip(*zip(*x),y) 我想知道对于暴露的问题是否有一些标准的解决方案 您的解决方案在Python 2.7中实际上不起作用: Python 2.7.13 (default, Jan 13 2017, 10

考虑以下数据:

x = [(1,1,1),(2,2,2),(3,3,3),(4,4,4)] 
y = ['a','b','c','d']
我希望实现以下结构:

[(1,1,1,'a'),(2,2,2,'b'),(3,3,3,'c'),(4,4,4,'d')]
目前,我正在这样做:

zip(*zip(*x),y)

我想知道对于暴露的问题是否有一些标准的解决方案

您的解决方案在Python 2.7中实际上不起作用:

Python 2.7.13 (default, Jan 13 2017, 10:15:16) 
[GCC 6.3.1 20161221 (Red Hat 6.3.1-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> x = [(1,1,1),(2,2,2),(3,3,3),(4,4,4)] 
>>> y = ['a','b','c','d']
>>> zip(*zip(*x),y)
  File "<stdin>", line 1
SyntaxError: only named arguments may follow *expression
。。。并且可以跨Python版本工作


另一个好处是,根据在我的机器上进行的一些快速、肮脏的测试,它比嵌套zip方法快70%左右。

What!!!事实上,5月份的例子和我实际做的有些不同。我做了
zip(y,*zip(*x))
,这是有效的,因为位置参数位于
*
表达式之前,而不是在表达式之后。在国际海事组织,这种脆弱性是避免你最初做法的另一个原因。
[a + (b,) for a, b in zip(x, y)]