为什么我不能在这样的文件中找到max number?

2024-10-01 05:00:44 发布

您现在位置:Python中文网/ 问答频道 /正文

虽然我对bash有很多经验,但我对python还是比较陌生的。我有一个由一列数字组成的文件,我想找出列表中最大的数字。我尝试使用以下代码执行此操作:

i = 0
with open('jan14.nSets.txt','r') as data:
    for num in data:
        if num > i:
            i = num
print(i)

1月14日。nSets.txt文件具体如下:

12
80
46
51
0
64
37
9
270
23
132
133
16
6
18
23
32
75
2
9
6
74
44
41
56
17
9
4
8
5
3
27
1
3
42
23
58
118
100
185
85
63
220
38
163
27
198

我收到的不是270,而是9作为输出,我不明白为什么会这样。我知道这是有内置的,但我想知道为什么这不能帮助我理解语言。我用的是python2.7


Tags: 文件txtbash列表dataaswith数字
1条回答
网友
1楼 · 发布于 2024-10-01 05:00:44

num是字符串,不是数字。首先使用^{}将其转换为整数:

num = int(num)

您正在比较文本,因此它是按词典排序的'9' > '80',因为ASCII字符'9'的码点高于'8'

>>> '9' > '80'
True

'9'行之后,所有其他行的初始数字要么小于'9',要么该行相等。你知道吗

如果首先使用^{}将所有行转换为整数,则可以使用^{} function

with open('jan14.nSets.txt','r') as data:
    i = max(map(int, data))

或者使用generator expression(在python2中,内存效率比map()高):

with open('jan14.nSets.txt','r') as data:
    i = max(int(num) for num in data)

两者都从data中提取所有行,将这些行映射到整数,并从中确定最大值。你知道吗

相关问题 更多 >