python:list()函数的困惑

本问题已经有最佳答案,请猛点这里访问。

我不明白list函数是如何工作的。

以下是我所做的研究:

我正在看的文件:

文档

我特别要看这一段:

class list([iterable]) Return a list whose items are the same and in
the same order as iterable’s items. iterable may be either a sequence,
a container that supports iteration, or an iterator object. If
iterable is already a list, a copy is made and returned, similar to
iterable[:]. For instance, list('abc') returns ['a', 'b', 'c'] and
list( (1, 2, 3) ) returns [1, 2, 3]. If no argument is given, returns
a new empty list, [].

list is a mutable sequence type, as documented in Sequence Types —
str, unicode, list, tuple, bytearray, buffer, xrange. For other
containers see the built in dict, set, and tuple classes, and the
collections module.

这里是另一个帖子:

另一篇关于list函数的文章

在这个帖子上,有人发布了以下内容:

1
2
3
4
>>> myList = ['hello']
>>> myList=list(myList[0])
>>> myList
['h', 'e', 'l', 'l', 'o']

但当我这样做的时候:

1
2
3
4
5
6
7
8
9
10
11
12
13
for root, dirs, files in os.walk(os.getcwd()):
     path_files.append(files)

path_files
[['combinedPdfs.py', 'meetingminutes.pdf', 'meetingminutes_encrypted.pdf', 'pdf_intro.py', 'pdf_paranoia.py', 'readDocx.py']]

>>> path_files_2 = list(path_files[0])
>>> path_files_2
['combinedPdfs.py', 'meetingminutes.pdf', 'meetingminutes_encrypted.pdf', 'pdf_intro.py', 'pdf_paranoia.py', 'readDocx.py']
>>> path_files_2[0]
'combinedPdfs.py'
>>> path_files_2[1]
'meetingminutes.pdf'

为什么我所做的工作与其他帖子的用户不同?

编辑# 1:

如果我这样运行:

1
2
3
4
5
6
7
8
9
>>> myList2 = ['hello', 'goodbye']
>>> myList2[0]
'hello'
>>> myList2 = list(myList2)
>>> myList2
['hello', 'goodbye']
>>> myList2  = list(myList2[0])
>>> myList2
['h', 'e', 'l', 'l', 'o']

如果我这样运行:

1
2
3
4
5
6
7
>>> myList4 = [['Hello', 'goodbye']]
>>> myList4 = list(myList4)
>>> myList4
[['Hello', 'goodbye']]
>>> myList4 = list(myList4[0])
>>> myList4
['Hello', 'goodbye']

我看到了这个定义,但我希望有一个更"门外汉"的方式来解释它。


使用名为path_files的列表,该列表实际上是列表中的列表。您可以看到这是因为列表末尾的双方括号,例如[['combinedPdfs.py', ..., 'readDocx.py']]。一个列表只有一组方括号。

命令>>> path_files = list(path_files)[0]本质上返回列表中作为列表的第一项。因此,在['hello']列表的情况下,它将hello分解为不同的字符。在您的列表中,它将列表中的第一项(在本例中是另一个列表)分解为它自己的列表。

虽然我看不出您在哪里定义了path_files_2(我假设它与新的path_files相同),但是当您键入path_files_2[0]时,您说的是返回列表中的第一项(零索引)。

我通常不认为它是"列表函数",而是"列表数据类型",它有自己的方法。当您键入list(...)时,我不认为它是一个"函数",而是将一个数据类型转换为一个列表数据类型的数据类型方法。