我不明白list
功能的工作原理。
以下是我所做的研究:
我正在查看的文档:
特别是,我正在看这一段:
class list([iterable])返回其项目相同的列表 与iterable的项目相同的顺序。 iterable可以是一个序列, 支持迭代的容器或迭代器对象。如果 iterable已经是一个列表,一个副本被创建并返回,类似于 可迭代[:]。例如,列表(' abc')会返回[' a',' b'' c']和 list((1,2,3))返回[1,2,3]。如果没有给出参数,则返回 一个新的空列表,[]。
list是一个可变序列类型,如序列类型中所述 - str,unicode,list,tuple,bytearray,buffer,xrange。对于其他 容器看到内置的dict,set和tuple类,以及 收藏模块。
这是另一篇文章:
Another post about the list function
在该帖子上,有人发布了以下内容:
>>> myList = ['hello']
>>> myList=list(myList[0])
>>> myList
['h', 'e', 'l', 'l', 'o']
但是当我这样做时:
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:
如果我运行这样的事情:
>>> myList2 = ['hello', 'goodbye']
>>> myList2[0]
'hello'
>>> myList2 = list(myList2)
>>> myList2
['hello', 'goodbye']
>>> myList2 = list(myList2[0])
>>> myList2
['h', 'e', 'l', 'l', 'o']
如果我运行这样的事情:
>>> myList4 = [['Hello', 'goodbye']]
>>> myList4 = list(myList4)
>>> myList4
[['Hello', 'goodbye']]
>>> myList4 = list(myList4[0])
>>> myList4
['Hello', 'goodbye']
我看到了这个定义,但我希望有一个更多的" laymans"解释它的方式。
答案 0 :(得分:2)
使用名为path_files
的列表,此列表实际上是列表中的列表。您可以看到这一点,因为列表末尾有双方括号,例如: [['combinedPdfs.py', ..., 'readDocx.py']]
。单个列表只有一组方括号。
命令>>> path_files = list(path_files)[0]
本质上是将列表中的第一个项目作为列表返回。因此,对于['hello']
列表,它会将hello
分成单独的字符。通过列表,它突破了列表中的第一项(在本例中为另一个列表),并将其分解为自己的列表。
虽然我看不到您定义的位置path_files_2
(我假设它与新path_files
相同),但当您输入path_files_2[0]
时,您要回复第一项列表(零索引)。
我通常不会将其视为"列表功能"而是#34;列表数据类型"有自己的方法。当您输入list(...)
时,我不会将其视为"功能"而是作为数据类型的方法将一种数据类型转换为列表数据类型。