python - Python:将“”分配给列表切片的行为的基本原理
问题描述
我通常使用在许多情况下自动广播的 numpy,并且对使用基本 python 中的列表的类似代码的行为感到困惑。
麻木案例
aa = np.zeros((10)).astype('U')
aa[0:5] = ''
aa
# array(['', '', '', '', '', '0.0', '0.0', '0.0', '0.0', '0.0'], dtype='<U32')
我在基础 Python 中的绊脚石
bb = ['0.0']*10
bb[0:5] = ''
bb
# ['0.0', '0.0', '0.0', '0.0', '0.0']
注意:它会缩短列表!
我应该做的
cc = ['0.0']*10
cc[0:5] = ['']*5
cc
# ['', '', '', '', '', '0.0', '0.0', '0.0', '0.0', '0.0']
我得到那个列表不广播东西,而是按元素做事。保持一致可能很好。但为什么不bb[0:5] = ''
只是抛出一个错误?
bb[0:5] = None
会有一些意义,但这反而会引发 TypeError。
bb[0:5] = ''
用文字描述的内容类似于“用空字符串替换此列表的前半部分”。但是用字符串替换列表的一部分是没有意义的。它们是不同的类型。
type('')
返回<class 'str'>
。
有人可以告诉我为什么要这样实施吗?必须是一个很好的理由,我不明白。
解决方案
推荐阅读
- laravel - 如何在 maatwebsite/excel 中从 2.x 升级到 3.x?
- sql - 使用分隔符在 sql 中循环
- java - 使用 OpenJDK 启动 Docker 容器时出现“Powershell”错误:Windowsservercore
- r - 如何在面板数据集中创建多个国家/地区的 5 年平均值?
- c# - 如何在 Azure DevOps Services 中使用 TfvcHttpClient 创建 TfvcLabel?
- javascript - (恶意)用户可以在运行时编辑我的 JavaScript 代码吗?
- javascript - 如何在 codemirror 中识别 javascript?
- c# - 如何在没有任何警报且不使用任何路径或文件名的情况下以只读方式打开 excel 文件?
- jboss - JDWP 传输 dt_socket 初始化失败,TRANSPORT_INIT(510)
- c++ - 使用openmp优化内部循环依赖于外部循环的并行嵌套循环