为什么我的列表元素在与for循环中的另一个int进行比较时被调用为str



我有一个txt源,它由3个数字(最大值为30)和每行末尾的一个回车组成。我的目标是用python将这个源文件制作成一个列表(二维数组),然后能够区分任何行的第一个数字和第一个数字的最小值。

到目前为止,源文件的转换如下:

list=[]
f=open("tavok.txt")
for sor in f:
if sor[-1]=='n':sor = sor[:-1]
sor = sor.split()
sor = [int(x) for x in sor]
list.append(sor)
print(list)

这给了我们一个列表,其中包含3个元素的列表,所有元素都是整数。然后,如果每个列表中的第一个元素小于当前最小值,我会尝试比较它。(100只是一个超过数字30限制的值)

minimum=100
for x in list:
if int(list[x][0])< minimum:
minimum = list[x][0]
print (minimum)

这给了我一条错误消息:

"如果int(list[x][0])<mini:TypeError:list索引必须是整数或切片,不列出">

我是编程新手,我找不到为什么我的值会从int转换回str,因此程序无法比较它们并给我此错误消息。感谢您的帮助

变量x是一个列表,所以不能用它来索引另一个列表。
if int(x[0])< minimum

这应该行得通。

我必须注意,使用list作为变量名是个坏主意,因为它是Python语言的关键字。在使用list作为变量名之后,不能使用list函数。

如果您想在所描述的情况下获得最小值,请考虑以下示例:

data = [[9,3,4],[1,9,7],[4,1,2]]
minimum = min([i[0] for i in data])
print(minimum) #prints 1

它使用列表理解来获取每个子列表的第一个元素,并内置min函数。请注意,这避免了幻数(在您的示例中为100)。

最新更新