我有一个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
)。