Python 的list是...

对 Python list遗憾

sum

对列表执行正确的操作几乎是不可能的。

my_list = list(range(1, 100001))

能够执行 sum()、min() 和 max() 的情况非常罕见。

sum(my_list)
5000050000

比如mean(), std() ,这些也不行。

mean(my_list)
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

Cell In[4], line 1
----> 1 mean(my_list)


NameError: name 'mean' is not defined
std(my_list)
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

Cell In[5], line 1
----> 1 std(my_list)


NameError: name 'std' is not defined

最后,别无选择,只能使用 numpy 或 statistic。

import numpy as np
np.mean(my_list), np.std(my_list)
(50000.5, 28867.513458037913)
import statistics as st
st.mean(my_list), st.stdev(my_list)
(50000.5, 28867.657796687745)

顺便说一下,np.std(my_list) 和 st.stdev(my_list) 是不同的,原因是通常的 ARE。

np.mean(my_list), np.std(my_list, ddof=1)
(50000.5, 28867.65779668774)
st.mean(my_list), st.pstdev(my_list)
(50000.5, 28867.513458037913)

如果做到的话…

希望它是 j,这样它也可以进行一般的向量运算。

my_list = list(range(1, 6))

以下不会导致错误,但会执行不同的操作:重复列表 n 次。

a = my_list * 3
a
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]

+ 的工作方式也不同。

my_list2 = list(range(11, 16))
my_list + my_list2
[1, 2, 3, 4, 5, 11, 12, 13, 14, 15]

如果是标量,+、-、/ 或 ** 将导致错误。

a = my_list + 2
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

Cell In[16], line 1
----> 1 a = my_list + 2


TypeError: can only concatenate list (not "int") to list
a = my_list ** 2
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

Cell In[17], line 1
----> 1 a = my_list ** 2


TypeError: unsupported operand type(s) for ** or pow(): 'list' and 'int'

好吧,如果可以直接说它是一个对列表类型执行指定操作的运算符就好了,但是在一致性方面就有点令人失望了。

我们是否应该将当前的 +、* 更改为 +++、***(因为 ** 是幂),就像最近引入的“海象运算符”一样?

但是,如果你让它的行为像 numpy.ndarray (除了会出现的混乱),那么“列表”的存在岂不是毫无意义?

列表类型的意义是什么?
我想是有的。

猜你喜欢

转载自blog.csdn.net/Allan_lam/article/details/134883231
今日推荐