程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了不能多次访问反转的 Python 列表大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决不能多次访问反转的 Python 列表?

开发过程中遇到不能多次访问反转的 Python 列表的问题如何解决?下面主要结合日常开发的经验,给出你关于不能多次访问反转的 Python 列表的解决方法建议,希望对你解决不能多次访问反转的 Python 列表有所启发或帮助;

有人可以向我解释一下吗?

import numpy as np

arr = reversed(np.arange(11))

print(List(arr))


print(List(arr))

print(List(arr))

这段代码的输出是:

不能多次访问反转的 Python 列表

为什么我不能多次访问 arr 变量?

解决方法

reversed 返回 iterator。当你第一次调用 list 时,你一直迭代到最后,它不再有任何回报。因此,如果您再次调用 list,它会立即提示“停止迭代”并且您会得到一个空列表。

修复是在您第一次调用 list存储它

>>> arr = list(reversed(np.arange(11)))
>>> arr
[10,9,8,7,6,5,4,3,2,1,0]

不过,在 numpy 的上下文中,您不会强制转换为 list 而是在 numpy 域中反转:

>>> arr = np.arange(11)[::-1]

>>> arr = np.arange(10,-1,-1)

>>> arr = np.flip(np.arange(11))

>>> arr = np.flipud(np.arange(11))

得到

>>> arr
array([10,0])
,

reversed 方法

在给定序列的值上返回一个反向迭代器

一旦迭代器被消耗,它就是空的


如果你消费它并存储在一个列表中,那么你可以多次使用它

import numpy as np

arr = list(reversed(np.arange(11)))
print(list(arr))  # [10,0]
print(list(arr))  # [10,0]
,

这与 reversed() 的返回有关。你预计它是一个列表,但它是一个迭代器

import numpy as np

arr = reversed(np.arange(11))

>>> print(list(arr))
[10,0]
>>> print(list(arr))
[]
>>> print(list(arr))
[]

首次运行后,迭代器为空。您可以通过从迭代器创建一个列表然后打印它来防止这种情况:

arr2 = list(reversed(np.arange(11)))
>>> print(list(arr2))
[10,0]
>>> print(list(arr2))
[10,0]

大佬总结

以上是大佬教程为你收集整理的不能多次访问反转的 Python 列表全部内容,希望文章能够帮你解决不能多次访问反转的 Python 列表所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。