元组的访问疑问
>>> c=os.walk('C:\\Users\\lyl\\AppData\\Local\\Programs\\Python\\Python39\\ccc')>>> c[:]
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
c[:]
TypeError: 'generator' object is not subscriptable
>>> c
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
c
TypeError: 'generator' object is not subscriptable
>>> list(c)
[('C:\\Users\\lyl\\AppData\\Local\\Programs\\Python\\Python39\\ccc', [], ['123.txt', '1234.txt', '234.txt', '39.py', '40.py', '41.py', '42.py', '890.txt', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'python3.dll', 'python39.dll', 'pythonw.exe'])]
>>> c(1)
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
c(1)
TypeError: 'generator' object is not callable
>>>
为什么无法访问元组里面的元素呢,如果要访问应该如何操作? 本帖最后由 wp231957 于 2021-9-18 09:31 编辑
生成器不能直接访问
试一下
list(c) 错误1:c是生成器,对其索引要先转换为列表或元组
>>> import os
>>> c = os.walk('f:/py/')
>>> d=tuple(c)
>>> d[:]
错误2:c(1),使用小括号,就会把c当作函数或类。所以提示生成器不能当作函数去调用。 wp231957 发表于 2021-9-18 09:30
生成器不能直接访问
试一下
list(c)
>>> c=os.walk('C:\\Users\\lyl\\AppData\\Local\\Programs\\Python\\Python39\\ccc')
>>> list(c)
[]
>>> list(c)
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
list(c)
IndexError: list index out of range
>>> list(c)
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
list(c)
IndexError: list index out of range
>>> list(c)(2)
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
list(c)(2)
IndexError: list index out of range
>>>
为什么list(c)有返回值
但是list(c)会报错? 冬雪雪冬 发表于 2021-9-18 09:34
错误1:c是生成器,对其索引要先转换为列表或元组
有没有办法让他不要返回生成器?就是直接出现我需要的值 全桥整流 发表于 2021-9-18 09:53
有没有办法让他不要返回生成器?就是直接出现我需要的值
增加一步转换成列表或元组 全桥整流 发表于 2021-9-18 09:52
>>> c=os.walk('C:\%users\\lyl\\AppData\\Local\\Programs\\Python\\Python39\\ccc')
>>> list(c)
先转列表,增设一个变量xx=list(c)
页:
[1]