len 和 size 的区别

Nep*_*muk 4 built-in python-3.x

我找到了两种方法来确定变量中有多少元素……我总是得到相同的值len ()size ()。有区别吗?可以size ()带有导入的库(例如math, numpy, pandas)吗?

asdf = range (10)
print ( 'len:', len (asdf), 'versus size:', size (asdf) )

asdf = list (range (10))
print ( 'len:', len (asdf), 'versus size:', size (asdf) )

asdf = np.array (range (10))
print ( 'len:', len (asdf), 'versus size:', size (asdf) )

asdf = tuple (range (10))
print ( 'len:', len (asdf), 'versus size:', size (asdf) )
Run Code Online (Sandbox Code Playgroud)

noc*_*mbi 6

size来自numpy(pandas 所基于的)。

它为您提供数组中元素的总数。但是,您也可以使用np.size(见下文)查询特定轴的大小。

相反,len给出第一维的长度。

例如,让我们创建一个由 36 个元素组成的数组,并排列成三个维度。

In [1]: import numpy as np                                                      

In [2]: a = np.arange(36).reshape(2, 3, -1)                                     

In [3]: a                                                                       
Out[3]: 
array([[[ 0,  1,  2,  3,  4,  5],
        [ 6,  7,  8,  9, 10, 11],
        [12, 13, 14, 15, 16, 17]],

       [[18, 19, 20, 21, 22, 23],
        [24, 25, 26, 27, 28, 29],
        [30, 31, 32, 33, 34, 35]]])

In [4]: a.shape                                                                 
Out[4]: (2, 3, 6)
Run Code Online (Sandbox Code Playgroud)

size

size会给你元素的总数

In [5]: a.size                                                        
Out[5]: 36
Run Code Online (Sandbox Code Playgroud)

len

len会给你第一维的“元素”的数量。

In [6]: len(a)                                                                  
Out[6]: 2
Run Code Online (Sandbox Code Playgroud)

这是因为,在这种情况下,每个“元素”代表一个二维数组。

In [14]: a[0]                                                                   
Out[14]: 
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17]])

In [15]: a[1]                                                                   
Out[15]: 
array([[18, 19, 20, 21, 22, 23],
       [24, 25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34, 35]])
Run Code Online (Sandbox Code Playgroud)

反过来,这些阵列具有自己的形状和大小。

In [14]: a[0]                                                                   
Out[14]: 
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17]])

In [15]: a[1]                                                                   
Out[15]: 
array([[18, 19, 20, 21, 22, 23],
       [24, 25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34, 35]])
Run Code Online (Sandbox Code Playgroud)

np.size

您可以size更具体地使用np.size.

例如,您可以len通过指定第一个 ('0') 维度来重现。

In [16]: a[0].shape                                                             
Out[16]: (3, 6)

In [17]: len(a[0])                                                              
Out[17]: 3
Run Code Online (Sandbox Code Playgroud)

您还可以查询其他维度的大小。

In [11]: np.size(a, 0)                                                          
Out[11]: 2
Run Code Online (Sandbox Code Playgroud)

基本上,您可以重现 的值shape