Python 为什么我的列表元素在与for循环中的另一个int比较时被调用为str?
我有一个txt源代码,它由3个数字(最大值为30)和每行末尾的enter组成。我的目标是使这个源文件成为python中的一个列表(二维数组),然后能够从任何一行的第一个数字中分辨出第一个数字的最小值 到目前为止,源文件的转换如下所示: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]
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
,在您的示例中)。Pythonfor
循环是一个for-each循环,因为它直接遍历值而不是索引。
data = [[9,3,4],[1,9,7],[4,1,2]]
minimum = min([i[0] for i in data])
print(minimum) #prints 1