我一直在一个项目工作,然后我意外
当我传递字符串时发现它们在list()
中被分割,但是当我将相同的字符串传递给[ ]
时,没有分割成字符串的单个字母。
谁能告诉我这里发生了什么?
>>> y = list("hello")
>>> y
['h', 'e', 'l', 'l', 'o']
>>> z = ["hello"]
>>> z
['hello']
答案 0 :(得分:3)
因为list
constructor将iterable作为参数并从该iterable的项构造一个列表。在您的情况下,它将获取字符串中的每个单独的子字符串,并将它们作为项目使用。
相反,[]
是一个替代构造函数,它根据提供的逗号分隔值构造一个列表,不执行其他操作。
通过在方括号内解压缩字符串,您可以在Python 3中使用[]
获得类似的结果:
s = "hello"
l = [*s]
print(l) # ['h', 'e', 'l', 'l', 'o']
在两个 Python版本中,您可以通过理解获得相同的结果:
l = [char for char in s]
答案 1 :(得分:2)
list
是builtin
,它采用可迭代并将其转换为列表。
[]
是定义列表的语言构造。要使用构造[]
获得相同的结果,您可以使用理解:
>>> z = [i for i in "hello"]
>>> z
['h', 'e', 'l', 'l', 'o']
答案 2 :(得分:1)
字符串是可迭代的。 list
函数(实际上它是一个类型,但它可以调用)迭代它的参数,使得iterable的每个元素(在你的情况下,字符串的每个字符)都是一个元素。结果清单。
对于任何迭代,这几乎都是一样的。你正在做的是相当于
的字符串>>> list([1, 2, 3])
[1, 2, 3]
>>> [[1, 2, 3]]
[[1, 2, 3]]
也就是说,在第二种情况下,您会得到一个包含单个可迭代的列表,而在第一种情况下,您会得到一个由可迭代的各个元素组成的列表。
答案 3 :(得分:0)
>>> y = list("hello")
中的
你要求python从"hello"
构建一个列表,它会删除元素
并在>>> z = ["hello"]
您创建一个包含单个元素hello
答案 4 :(得分:0)
list()方法根据给定的输入生成一个列表。
带方括号的版本意味着您要创建一个包含一个元素的列表,即您的字符串。因此,它没有被拆分。
答案 5 :(得分:0)
y = list(“你好”) list()是一个内置函数,它接受一个可迭代的“返回一个列表,其项目与iterable的项目相同且顺序相同”(参见https://docs.python.org/2/library/functions.html#list)。
z = [“你好”] 这只是一个包含单个元素(字符串类型)的列表。
答案 6 :(得分:0)
在你的第一个例子中;
>>> y = list("hello")
你正在施放一个字符串"你好"到列表
在第二个例子中;
>>> z = ["hello"]
您正在创建一个数组(列表),其中包含一个项目,其中包含内容"您好"