何时使用方括号与圆括号?numpy.array两种传参写法有何差异?
好问题!咱们一步步来拆解你的疑问:
关于方括号[]和圆括号()的使用场景,以及numpy.array两种写法的差异
一、方括号[]和圆括号()的通用使用场景
- 方括号[]:主要用于定义列表(list),也用于数组/列表的索引、切片操作(比如
my_list[0]、arr[1:3]),还在字典中作为键的访问方式(my_dict["key"])。另外,列表推导式([x*2 for x in range(5)])这类语法结构也依赖方括号。 - 圆括号():主要用于定义元组(tuple)(注意单元素元组必须加逗号,比如
(1,)),还用于函数调用(print("hello"))、表达式分组改变运算优先级((a + b)*c),以及生成器表达式((x*2 for x in range(5)))。
二、numpy.array中两种写法的差异
你测试后得到完全一致的结果,这是必然的——在这个场景下,np.array([1,2,3])和np.array((1,2,3))没有任何功能上的区别。
原因是numpy.array()的第一个参数接受的是array_like类型,列表(list)和元组(tuple)都属于这个范畴。numpy内部会自动将这两种可迭代对象转换为numpy数组,所以最终生成的数组在维度、形状、类型上完全相同。
三、调用numpy.array的最优语法?偏好其中一种的原因
其实没有绝对的“最优”,更多是风格和习惯问题:
- 偏好方括号[]的人:大多是因为列表是Python中最常用的可迭代容器,写起来更顺手,而且和numpy数组的输出格式(
[1 2 3])视觉上更统一,新手也更容易理解。另外,很多numpy官方示例文档里也常用列表作为输入,慢慢形成了行业习惯。 - 偏好圆括号()的人:可能是考虑到元组是不可变类型,传入时不会意外被修改(不过在numpy.array里,不管传入列表还是元组,都会被转换为新的数组对象,原对象本身不会被修改,所以这个优势其实不明显);或者是为了和自己代码里其他部分的风格统一,比如习惯用元组传递固定长度的序列。
如果非要选一个“更通用”的写法,那用方括号[]会更符合大多数Python开发者的阅读习惯,接受度更高。
内容的提问来源于stack exchange,提问作者LunaHK
相关产品推荐
相关产品推荐

