如何合并1D&;Python中的2D元组?
如何在Python中合并1D和2D元组 所以给出了两个列表如何合并1D&;Python中的2D元组?,python,list,merge,tuples,Python,List,Merge,Tuples,如何在Python中合并1D和2D元组 所以给出了两个列表 heights = ( 165, 152, 145, 174) pos_2D = ( (2,3), (32,52), (73,11), (43,97) ) 我想这样 pos_3D = merge(heights, pos_2D) 在哪里 做这件事的蟒蛇式方法是什么?使用 Ex: heights = ( 165, 152, 145, 174) pos_2D = ( (2,3),
heights = ( 165, 152, 145, 174)
pos_2D = ( (2,3), (32,52), (73,11), (43,97) )
我想这样
pos_3D = merge(heights, pos_2D)
在哪里
做这件事的蟒蛇式方法是什么?使用
Ex:
heights = ( 165, 152, 145, 174)
pos_2D = ( (2,3), (32,52), (73,11), (43,97) )
print(tuple(j + (i,) for i, j in zip(heights, pos_2D)) )
((2, 3, 165), (32, 52, 152), (73, 11, 145), (43, 97, 174))
输出:
heights = ( 165, 152, 145, 174)
pos_2D = ( (2,3), (32,52), (73,11), (43,97) )
print(tuple(j + (i,) for i, j in zip(heights, pos_2D)) )
((2, 3, 165), (32, 52, 152), (73, 11, 145), (43, 97, 174))
使用
Ex:
heights = ( 165, 152, 145, 174)
pos_2D = ( (2,3), (32,52), (73,11), (43,97) )
print(tuple(j + (i,) for i, j in zip(heights, pos_2D)) )
((2, 3, 165), (32, 52, 152), (73, 11, 145), (43, 97, 174))
输出:
heights = ( 165, 152, 145, 174)
pos_2D = ( (2,3), (32,52), (73,11), (43,97) )
print(tuple(j + (i,) for i, j in zip(heights, pos_2D)) )
((2, 3, 165), (32, 52, 152), (73, 11, 145), (43, 97, 174))
它们并不完全是一维或二维的。第一个是整数的元组,第二个是元组。因此,您只需并行地迭代它们(使用zip),并为每对元素创建一个新的元组元素
result = tuple( (*pos, h) for pos, h in zip(pos2D, heights))
它们并不完全是一维或二维的。第一个是整数的元组,第二个是元组。因此,您只需并行地迭代它们(使用zip),并为每对元素创建一个新的元组元素
result = tuple( (*pos, h) for pos, h in zip(pos2D, heights))
使用zip
zip(heights,*zip(*pos_2D))
>>>[(165, 2, 3), (152, 32, 52), (145, 73, 11), (174, 43, 97)]
或者如果您想要tuple
tuple(zip(heights,*zip(*pos_2D)))
>>>((165, 2, 3), (152, 32, 52), (145, 73, 11), (174, 43, 97))
zip
从两个参数中生成元组列表,zip(*\ux)
将元组转换回单个参数(将其视为解压)
代码说明。
heights = ( 165, 152, 145, 174)
pos_2D = ( (2,3), (32,52), (73,11), (43,97) )
使用第二个元组pos_2D
我们可以将其解压为单独的参数,如下所示
pos_2D_unzipped = zip(*pos_2D)
print pos_2D_unzipped
>> [(2, 32, 73, 43), (3, 52, 11, 97)]
现在,我们可以使用它将heights
和pos\u 2D\u解压缩
压缩到一起,以获得您想要的内容
为此,我们可以做一些类似于zip(heights,pos\u 2D\u unzipped)
的事情,但这只会用pos\u 2D\u unzipped
的两个长元组压缩zip的前两个元素
zip(heights, pos_2D_unzipped)
[(165, (2, 32, 73, 43)), (152, (3, 52, 11, 97))]
您真正需要做的是:为zip
提供三个参数,1<代码>高度,2。pos_2D_的第一个元素已解压缩
和3。pos\u 2D\u解压的第二个元素
所以你可以这样做:
zip(heights, pos_2D_unzipped[0],pos_2D_unzipped[1])
>>[(165, 2, 3), (152, 32, 52), (145, 73, 11), (174, 43, 97)]
真管用!但是你可以做得更快pos\u 2D\u unzip
是一个包含两个元素(即长元组)的列表,如果您可以将列表中的每个元素直接提供给zip
,那就太好了。这正是*pos\u 2D\u unzip
在zip(uuu)
侧边所做的。它将列表打开为函数的各个参数
所以现在你可以,
zip(heights, *pos_2D_unzipped)
>>[(165, 2, 3), (152, 32, 52), (145, 73, 11), (174, 43, 97)]
甚至更好的是,现在您可以将解压缩pos_2D
和解压缩高度和pos_2D_解压缩的
两个步骤压缩为一个步骤
zip(高度,*zip(*pos_2D))
带zip
zip(heights,*zip(*pos_2D))
>>>[(165, 2, 3), (152, 32, 52), (145, 73, 11), (174, 43, 97)]
或者如果您想要tuple
tuple(zip(heights,*zip(*pos_2D)))
>>>((165, 2, 3), (152, 32, 52), (145, 73, 11), (174, 43, 97))
zip
从两个参数中生成元组列表,zip(*\ux)
将元组转换回单个参数(将其视为解压)
代码说明。
heights = ( 165, 152, 145, 174)
pos_2D = ( (2,3), (32,52), (73,11), (43,97) )
使用第二个元组pos_2D
我们可以将其解压为单独的参数,如下所示
pos_2D_unzipped = zip(*pos_2D)
print pos_2D_unzipped
>> [(2, 32, 73, 43), (3, 52, 11, 97)]
现在,我们可以使用它将heights
和pos\u 2D\u解压缩
压缩到一起,以获得您想要的内容
为此,我们可以做一些类似于zip(heights,pos\u 2D\u unzipped)
的事情,但这只会用pos\u 2D\u unzipped
的两个长元组压缩zip的前两个元素
zip(heights, pos_2D_unzipped)
[(165, (2, 32, 73, 43)), (152, (3, 52, 11, 97))]
您真正需要做的是:为zip
提供三个参数,1<代码>高度
,2。pos_2D_的第一个元素已解压缩
和3。pos\u 2D\u解压的第二个元素
所以你可以这样做:
zip(heights, pos_2D_unzipped[0],pos_2D_unzipped[1])
>>[(165, 2, 3), (152, 32, 52), (145, 73, 11), (174, 43, 97)]
真管用!但是你可以做得更快pos\u 2D\u unzip
是一个包含两个元素(即长元组)的列表,如果您可以将列表中的每个元素直接提供给zip
,那就太好了。这正是*pos\u 2D\u unzip
在zip(uuu)
侧边所做的。它将列表打开为函数的各个参数
所以现在你可以,
zip(heights, *pos_2D_unzipped)
>>[(165, 2, 3), (152, 32, 52), (145, 73, 11), (174, 43, 97)]
甚至更好的是,现在您可以将解压缩pos_2D
和解压缩高度和pos_2D_解压缩的
两个步骤压缩为一个步骤
zip(高度,*zip(*pos_2D))
只需为两者创建新的元组即可。或者使用zip
为两者创建新的元组。或者使用zip
列表转换似乎是不必要的元组(j+(i,)用于zip中的i,j(高度,位置2D))
@Chris\u Rands。感谢列表转换似乎不必要元组(j+(i,)对于zip中的i,j(高度,位置2D))
@Chris\u Rands。谢谢,这正是我要找的:)简单的,一行的!酷:)谢谢蓝注:)这正是我要找的:)简单的东西,一行!酷:)谢谢,蓝注:)你能解释一下你的第一个例子是如何工作的吗?看起来有点神奇(从初学者的角度)。提前谢谢:)那很有帮助。这更有意义,这很有帮助。这更有意义。首先,将2D列表分解为两个元组,其中包含第一个数字x和y。然后*pos_2D_解压允许我们将x和y分别传递给下一个zip函数。您能解释一下第一个示例是如何工作的吗?看起来有点神奇(从初学者的角度)。提前谢谢:)那很有帮助。这更有意义,这很有帮助。这更有意义。首先,将2D列表分解为两个元组,其中包含第一个数字x和y。然后*pos_2D_解压允许我们将x和y分别传递给下一个zip函数。