Python版本2.7不允许重复*表达式

Python版本2.7不允许重复*表达式,python,python-2.7,Python,Python 2.7,看看这个例子: 我有两个坐标元组:coor_a,coor_b,它是从numpy.which生成的。它的结构是这样的:coor_a=([ya1,ya2,…yan],[xa1,xa2,…xan]) 如果我想同时处理这两个坐标,我想在python3中使用这种方式: for ya, xa, yb, xb in zip(*coor_a, *coor_b): ... 但在python2中,这是一个语法错误。Pycharm将发出警告:python 2.7版不复制*表达式。当然,我可以将zip(*co

看看这个例子: 我有两个坐标元组:
coor_a
coor_b
,它是从
numpy.which
生成的。它的结构是这样的:
coor_a=([ya1,ya2,…yan],[xa1,xa2,…xan])
如果我想同时处理这两个坐标,我想在python3中使用这种方式:

for ya, xa, yb, xb in zip(*coor_a, *coor_b):
    ...
但在python2中,这是一个语法错误。Pycharm将发出警告:
python 2.7版不复制*表达式
。当然,我可以将
zip(*coor_a,*coor_b)
替换为
zip(coor_a[0],coor_a[1],coor_b[0],coor_b[1])
,但它并不优雅!所以我期待一种更简单、更方便的方法来实现它


谢谢你的回复

更新的软件版本提供附加功能是很自然的

尝试:


如果您不介意增加内存消耗,
zip(*(ca+cb))
始终是一个选项,但不推荐使用。@metatoaster非常感谢。你能推荐更合适的方法吗?不需要严格遵守我的方式。问题是Python2禁止了很多这种“优雅”的语法。即使使用
zip
在内存消耗方面也很糟糕,因为它在Python2中完全生成列表,而在Python3中它实际上是一个内存高效的迭代器。在Python2中,您必须使用,而在Python3中这是不可用的。随着Python2的不受欢迎已经迫在眉睫,支持Python2开发新代码实在是不值得的。基本上,没有可能同时对Python2和Python3有效的解决方案,也没有可能利用“优雅”的解决方案在Python2和Python3下都可以使用的语法,但在Python2和Python3下都不会导致内存消耗的显著增加。@metatoaster Ok,非常感谢!我知道了。我需要将我的算法迁移到ros,所以我必须使用python2。无论如何,谢谢你的回复!
for ya, xa, yb, xb in zip(*(coor_a + coor_b)):
    ...