我知道有一些明显的东西让我失踪但是我宁愿清除我的困惑而不是捣乱。 为什么以下代码: [1] * 5 返回 [1,1,1,1,1]
而不是 [5]
或
[[1],[1],[1],[1],[1]]
答案 0 :(得分:2)
一般而言,为序列定义乘法,而不仅仅是list
s,无论所包含的值的类型如何。当然,[1] * 5
- > [5]
对list
int
有意义,但对于list
str
或str
本身来说,它是荒谬的。
他们想要一个适用于所有类型序列的通用序列处理程序,因此他们将其定义为重复串联,而不是元素算术。正如juanpa在评论中提到的那样,这就形成了一致的定义:seq + seq
是连接,因此seq * int
只是seq + seq
重复int
次(嗯,seq
重复int
次,有四个虚拟连接),inta * intb
仅inta + inta
重复intb
次的方式相同。
如果您想要逐元算术,请查看numpy
数组。