Python 3.5' list'对象没有属性' min'和unorderable类型:str()< int()和

时间:2017-03-31 15:56:20

标签: python

我尝试使用python 3.5来学习本教程here,但是我得到了错误而不是预期的结果。此外,如果您解释下面的指示行,我将不胜感激。

import matplotlib.pyplot as plt
x=[1,2,3,4,5]
y=[1,2,3,4,5]

list1, list2 = [123, 'xyz', 'zara', 'abc'], [456, 700, 200]
print ("min value element : ", min(list1))
print ("min value element : ", min(list2))

plt.scatter(x, y,  color='red') 
#please explain this line:
plt.plot([y.min(), y.max()], [y.min(), y.max()], color='blue', linewidth=3) 

plt.show()

3 个答案:

答案 0 :(得分:1)

在python 3中,内置数据类型的比较操作更严格。

>>> min([123, 'xyz', 'zara', 'abc'])
TypeError: unorderable types: str() < int()

min()尝试比较python 2中可能的'xyz' < 123,而不是python 3中的min(list)

如果您想获得列表中最小的成员,请使用list.min(),而不是plt.plot([min(y), max(y)], [min(x), max(x)], color='blue', linewidth=3)

这应该有用,例如:

my $path =     $shellcode . (pack('V', $target->[2]) x 16) . "\x00\x00";

答案 1 :(得分:0)

问题可能是您需要将列表传递到min和max,如下所示:

plt.plot([min(y), max(y)], [min(y), max(y)], color='blue', linewidth=3) 

现在这只会在[1,1]和[5,5]之间划一条线。

如果你想相互绘制x和y,你可以这样做:

plt.plot(x, y, color='blue', linewidth=3) 

对于list1,你有一个包含整数和字符串的列表,所以字符串只会被min和max忽略。

答案 2 :(得分:0)

Numpy数组有min和max方法,Python列表没有。 Python确实有minmax functions,特别是在numpy数组上较慢,因为它们会迭代所有条目作为Python对象。该教程错误地将函数称为methods,它们对迭代进行操作,而不是列表。