Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 组合两个不同元组值的最佳方法_Python_Python 3.x_Tuples - Fatal编程技术网

Python 组合两个不同元组值的最佳方法

Python 组合两个不同元组值的最佳方法,python,python-3.x,tuples,Python,Python 3.x,Tuples,我想将两个元组(任意大小)的值相加,并创建一个输出元组。 例如: a = (1,4) b = (2,3) 输出:(3,7) 有没有比以下更好的方法: output = (a[0] + b[0], a[1]+b[1]) 如果您想坚持使用2元组,那么您所拥有的是很好的(而且可能是最好的)。您可以考虑使用不同的数据结构,其中 +>代码>运算符添加元素。例如: a = (1,4) b = (2,3) complex数字像两个向量一样相加(使用.real和.imag组件) numpy数组 编写自己

我想将两个元组(任意大小)的值相加,并创建一个输出元组。 例如:

a = (1,4)
b = (2,3)
输出:
(3,7)

有没有比以下更好的方法:

output = (a[0] + b[0], a[1]+b[1])

如果您想坚持使用2元组,那么您所拥有的是很好的(而且可能是最好的)。您可以考虑使用不同的数据结构,其中<代码> +>代码>运算符添加元素。例如:

a = (1,4)
b = (2,3)
  • complex
    数字像两个向量一样相加(使用
    .real
    .imag
    组件)
  • numpy
    数组
  • 编写自己的
    类,覆盖
    \uuuuu添加
    魔术方法

如果你想坚持使用2元组,你所拥有的是好的(可能是最好的)。您可以考虑使用不同的数据结构,其中<代码> +>代码>运算符添加元素。例如:

a = (1,4)
b = (2,3)
  • complex
    数字像两个向量一样相加(使用
    .real
    .imag
    组件)
  • numpy
    数组
  • 编写自己的
    类,覆盖
    \uuuuu添加
    魔术方法

如果你不想以一种不需要你把所有元素都拼出来的方式来做,那么就用一些功能性的东西:

output = tuple(map(sum, zip(a,b)))
或者,您必须再次向
元组提供的列表comp

output = tuple([i+j for i,j in zip(a,b)])

如果大小可能不同,您总是可以使用
itertools
中的
zip\u longest
替换
zip
,使用
0
的填充值。如果您不想以不需要拼出所有元素的方式执行此操作,请使用以下功能:

output = tuple(map(sum, zip(a,b)))
或者,您必须再次向
元组提供的列表comp

output = tuple([i+j for i,j in zip(a,b)])

如果大小可能不同,您始终可以使用
itertools
中的
zip\u longest
替换
zip
,使用
0
的填充值。

使用生成器表达式如何

output = tuple(a[i] + b[i] for i in range(len(a)))
如果您不知道元组的长度相同,可以尝试使用更奇特的方法,如
zip
(将在较短元组的长度处停止),或
itertools.izip
(允许您控制如何处理不同长度的元组)


使用生成器表达式怎么样

output = tuple(a[i] + b[i] for i in range(len(a)))
如果您不知道元组的长度相同,可以尝试使用更奇特的方法,如
zip
(将在较短元组的长度处停止),或
itertools.izip
(允许您控制如何处理不同长度的元组)


请澄清您询问的是“2元组”,因为您有两个元素的元组,或者“2元组”表示您正在添加一对元组。请澄清您询问的是“2元组”,因为您有两个元素的元组,或者“2元组”表示您正在添加一对元组。在第二个示例中,您实际上不需要中间列表,因为您可以使用生成器exp而不是列表理解。因此您可以删除
[
]
。i、 e.
tuple(i+j表示zip(a,b)中的i,j))
第一个示例似乎是最好的通用解决方案,因为它可以处理任意数量的输入元组。在第二个示例中,您实际上不需要中间列表,因为您可以使用生成器exp而不是列表理解。因此您可以删除
[
]
。i、 e.
tuple(i+j表示zip(a,b)中的i,j))
第一个示例似乎是最好的通用解决方案,因为它适用于任意数量的输入元组。给出答案时,最好给出的是一个。给出答案时,最好给出的是一个。