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

Python 为什么我的列表元素在与for循环中的另一个int比较时被调用为str?,python,python-3.x,string,integer,Python,Python 3.x,String,Integer,我有一个txt源代码,它由3个数字(最大值为30)和每行末尾的enter组成。我的目标是使这个源文件成为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]

我有一个txt源代码,它由3个数字(最大值为30)和每行末尾的enter组成。我的目标是使这个源文件成为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个数字限制的值)

最小值=100
对于列表中的x:
如果int(列表[x][0])<最小值:
最小值=列表[x][0]
打印(最低)
这会给我以下错误消息:

“如果int(list[x][0])
我是编程新手,我不知道为什么我的值会从
int
转换回
str
,因此程序无法比较它们并向我发送此错误消息。感谢您的帮助

变量
x
是一个列表,因此您不能使用它为其他列表编制索引

if int(x[0])< minimum
如果int(x[0])<最小值

这应该行得通。

我必须注意,使用
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
,在您的示例中)。

Python
for
循环是一个for-each循环,因为它直接遍历值而不是索引。
data = [[9,3,4],[1,9,7],[4,1,2]]
minimum = min([i[0] for i in data])
print(minimum) #prints 1