美文网首页
python 中函数reversed()

python 中函数reversed()

作者: 周周周__ | 来源:发表于2018-08-25 10:54 被阅读0次

    reversed()函数是返回序列seq的反向访问的迭代子。参数可以是列表,元组,字符串,不改变原对象。
    在此仅举列表的例子,其他组合数据类型也合适

    l=[1,2,3,4,5]
    ll=reversed(l)
    l
    [1, 2, 3, 4, 5]
    ll
    <listreverseiterator object at 0x06A9E930>
    for i in ll:#第一次遍历
    ... print i,
    ...
    5 4 3 2 1
    for i in ll:第二次遍历为空,原因见本文最后
    ... print i
    []

    那么大家的问题来了,为什么列表的第二次的返回值是空?

    That’s because reversed creates an iterator, which is already spent when you’re calling list(ll) for the second time.
    The reason is that ll is not the reversed list itself, but a listreverseiterator. So when you call list(ll) the first time, it iterates over ll and creates a new list from the items output from that iterator.When you do it a second time, ll is still the original iterator and has already gone through all the items, so it doesn’t iterate over anything, resulting in an empty list.
    译文:这是因为颠倒创建了一个迭代器,当你第二次调用list(ll)时,它已经被花掉了。原因是ll不是相反的列表本身,而是一个listreverseiterator。因此,当你第一次调用list(ll)时,它会遍历ll,并从迭代器的物品输出中创建一个新的列表。当你第二次做的时候,ll仍然是原来的迭代器并且已经完成了所有的项目,所以它不会迭代任何东西,导致一个空列表

    相信大家都能看懂,因为生成的迭代器的问题。
    迭代器不熟悉的话,可以回顾一下。

    参考链接: https://blog.csdn.net/sxingming/article/details/51353379

    相关文章

      网友评论

          本文标题:python 中函数reversed()

          本文链接:https://www.haomeiwen.com/subject/knwwiftx.html