定义的不是tuple,是1
这个数!这是因为括号()
既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1
。
所以,只有1个元素的tuple定义时必须加一个逗号,
,来消除歧义:
>>> t = (1,)
>>> t
(1,)
Python在显示只有1个元素的tuple时,也会加一个逗号,
,以免你误解成数学计算意义上的括号。
下面就用几个示例方便大家理解:
import numpy as np
print(np.shape([1]))
print(np.shape([1,]))
print(np.shape([1,1]))
print(np.shape([None,None]))
print(np.shape([[None],[None]]))
print(np.shape([[[None],[None]],[[None],[None]]]))
这是上面代码对应的输出:
(1,)
(1,)
(2,)
(2,)
(2, 1)
(2, 2, 1)
由此我们可以知道,[1]与[1,]的含义是一样的,“,”逗号确实是用来标记它与单纯只有()的区别的。
另外由1*2维的list我们可以知道,*n维的它都会直接用(n,)来表示,逗号写在列数n后面。
import numpy as np
a = [1,2]
b = [[1,2]]
c = np.array(a)
d = np.array(b)
print(a[0])
print(b[0])
print(b[0][0])
print(c.shape)
print(d.shape)
1
[1, 2]
1
(2,)
(1, 2)
python认为b是1*2维的列表,而a是*2维的列表,以示区分用(2,)表示a