列表(a)和[a]之间有什么区别?

per*_*ror 1 python string constructor list

我注意到两个列表构造函数之间存在一些奇怪的区别,我认为它们是等价的.

这是一个小例子:

hello = 'Hello World'

first = list(hello)
second = [hello]

print(first)
print(second)
Run Code Online (Sandbox Code Playgroud)

此代码将生成以下输出:

['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
['Hello World']
Run Code Online (Sandbox Code Playgroud)

所以,两个构造函数之间的差异非常明显......而且,我猜这也可以推广到其他构造函数,但我无法理解它背后的逻辑.

有人可以对我的讯问进行抨击吗?

dec*_*eze 8

list()构造函数到底需要一个参数,它必须是一个迭代.它返回一个新列表,每个元素都是给定iterable中的一个元素.由于字符串是可迭代的(按字符),因此返回包含单个字符的列表.

[]需要尽可能多的"参数",每个参数都是列表中的单个元素; 这些项目不是"评估"或迭代的,它们按原样使用.

一切都如记录.