Python打印列表时出现"<built-in method ... object"的问题

5
import numpy as np
arr = list(map(float,input().split()))
print(np.array(arr.reverse))

为什么它打印的是这个,而不是列表的内容?
# outputs "<built-in method reverse of list object at 0x107eeeec8>"
1个回答

5
你有两个问题。
第一个问题是你实际上没有在数组arr上调用reverse方法。
你写了这个: arr.reverse 你需要实际调用它 -> arr.reverse() 下面是简单的示例:
>>> [1,2,3].reverse
<built-in method reverse of list object at 0x100662c68>

如果不调用reverse方法,你得到的输出结果是list对象未被调用的反转方法,这与你之前得到的输出非常相似。

你面临的第二个问题是reverse()方法会就地执行反转操作,也就是说它会对arr进行反转(你的arr将被反转),并返回None。因此,当你传入以下内容时:

np.array(arr.reverse())

你将arr.reverse()的返回值传递给了np.array,它的返回值是None
解决这两个问题的方法是先调用arr.reverse(),然后再传递arr。这样即可得到你期望的结果。
import numpy as np
arr = list(map(float,input().split()))
arr.reverse()
res = np.array(arr)
print(res)

演示:

1 2 3 4
[ 4.  3.  2.  1.]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接