Python 为什么使用“打印”(iterable)时输出不打印?
我不明白为什么在使用Python 为什么使用“打印”(iterable)时输出不打印?,python,python-2.7,Python,Python 2.7,我不明白为什么在使用list后,情况1和第二种情况下不打印输出 案例一: s='india' print(reversed(s)) 输出 <reversed object at 0x...> ['a', 'i', 'd', 'n', 'i'] 输出 <reversed object at 0x...> ['a', 'i', 'd', 'n', 'i'] 如果要反转字符串,请尝试以下操作: string = ''.join(reversed(s)) 这是因为r
list
后,情况1和第二种情况下不打印输出
案例一:
s='india'
print(reversed(s))
输出
<reversed object at 0x...>
['a', 'i', 'd', 'n', 'i']
输出
<reversed object at 0x...>
['a', 'i', 'd', 'n', 'i']
如果要反转字符串,请尝试以下操作:
string = ''.join(reversed(s))
这是因为reversed输出一个迭代器,迭代器不保存值,而是动态计算值。“”联接部分使用生成器并生成字符串
有关生成器/迭代器的更多信息,请参见Python文档中的: 返回一个反向迭代器。seq必须是具有
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
\uuuu len\uuuuu()方法和带有整数的\uuuu getitem\uuuuuu()方法
从0开始的参数)
构造函数生成一个列表,其中的项相同且位于相同的位置
按iterable的项目订购。iterable可以是序列,也可以是
支持迭代的容器或迭代器对象。如果可以的话
已经是一个列表,复制并返回,类似于
iterable[:]。例如,list('abc')
返回['a','b','c']
和
列表((1,2,3))
返回[1,2,3]
。如果没有给出任何参数,则
构造函数创建一个新的空列表,[]
因此:
reversed(string)
将返回一个遍历字符串的迭代器<代码>列表(迭代器)
将迭代器转换为列表<代码>列表(字符串)
将字符串拆分为其组成字符
因此
list('india')
返回['i','n','d','i','a']
reversed('india')
返回作为迭代器的
可以使用list
运算符将迭代器转换为列表:
列表(反向('india'))
返回['a','i','d','n','i']
或者,您可以对其进行迭代:
for n in reversed('india'):
print(n)
打印出来的
a
i
d
n
i
在案例1中打印输出。输出是一个迭代器。您是否尝试打印list
以查看生成的内容?请参阅位于的python文档以获取reversed
,您可以看到结果。你的两个箱子都印了些东西。第一种情况的结果是迭代器。您不会将结果视为['a',i',d',n',i']
,因为这不是结果-您必须使用迭代器才能查看其内容,正如列表(…)
所做的那样。请注意,不确定这是被否决的原因。这似乎很好(虽然没有公认的答案那么深入)