Python如何解析(x,)形式的半空元组?numpy代码中(2,)的作用是什么?
问题解答
1. 代码中(2,)是不是必需的?
是的,这个写法是必须的,原因如下:
- 经过
np.meshgrid处理后,X和Y的维度都是(50, 50),X.shape返回的是元组类型(50, 50) - Python中元组只能和元组拼接,如果你直接写
X.shape + 2会直接抛出TypeError: can only concatenate tuple (not "int") to tuple的报错 - 写成
(2,)就是把整数2包装为单元素元组,和(50,50)拼接后得到(50,50,2)的维度,正好可以用来存储每个网格点对应的(x,y)坐标对,后续通常会配合pos[:,:,0] = X、pos[:,:,1] = Y完成坐标的赋值。
2. Python如何解析(x,)这类形式的元组?
Python中逗号才是元组的核心标识,括号只是可选的辅助符号,(x,)的作用是显式声明这是一个仅包含单个元素x的元组,避免和普通带括号的表达式混淆:
- 你如果写
a = (2),Python会把括号识别为普通的优先级运算符,最终a的类型是整数,值为2 - 你如果写
a = (2,)或者直接写a = 2,,Python才会识别为元组类型,长度为1,第一个元素是2 - 这种写法在需要显式声明单元素元组的场景非常常见,除了上面的元组拼接场景,还有函数传参、解包等场景都会用到。
内容的提问来源于stack exchange,提问作者lpnorm
相关产品推荐
相关产品推荐

