Python 查找整数池中的最大数

Python 查找整数池中的最大数,python,python-3.x,Python,Python 3.x,我已经在这个代码上工作了很长一段时间了,坦率地说,我对如何解决这个问题没有更多的想法。关于如何做到这一点,我已经寻找了不同的线索,不幸的是,仍然没有答案 首先,我有一个数据池,它是一个字符串,但需要被视为一个列表。例如: # empDataLT 200401003,Luisa,Jurney,Accounting,800,21,4/8/2002,; 200208006,Clorinda,Heimann,Accounting,1050,15,5/21/1994,; 200307014,Dick,We

我已经在这个代码上工作了很长一段时间了,坦率地说,我对如何解决这个问题没有更多的想法。关于如何做到这一点,我已经寻找了不同的线索,不幸的是,仍然没有答案

首先,我有一个数据池,它是一个字符串,但需要被视为一个列表。例如:

# empDataLT
200401003,Luisa,Jurney,Accounting,800,21,4/8/2002,;
200208006,Clorinda,Heimann,Accounting,1050,15,5/21/1994,;
200307014,Dick,Wenzinger,Admin,565,15,10/13/1973,;
200901005,Ahmed,Angalich,Purchasing,750,20,2/10/1973,;
200704013,Iluminada,Ohms,Marketing,750,16,7/13/1972,;
201701018,Joanna,Leinenbach,Finance,1050,15,11/6/1980,;
201003007,Caprice,Suell,Admin,750,18,6/28/1992

a = empRecords.strip().split(";")
此池的格式为:员工编号、名字、姓氏、部门、每日费率、工作天数、生日

我一直想做的是计算员工每天的工资乘以工作天数,然后找出他们中谁是收入最高的员工。我有下面的代码,它工作得很好,但是当然它缺少后面需要的结果(aka,最高收入)

这将导致如下结果:

20800
14400
21600
24000
12800
24000
这是伟大的,因为我有结果(耶)。但是,我无法寻找最高收入,因为我在尝试
max()
时通常会出错,因为它是一个整数。我试着将它转换成一个
str
,然后使用
max()
,它只会给出每个整数的最大值

我真的不知道该怎么办了

试试这个:

empRecords = '''200401003,Luisa,Jurney,Accounting,800,21,4/8/2002,;
200208006,Clorinda,Heimann,Accounting,1050,15,5/21/1994,;
200307014,Dick,Wenzinger,Admin,565,15,10/13/1973,;
200901005,Ahmed,Angalich,Purchasing,750,20,2/10/1973,;
200704013,Iluminada,Ohms,Marketing,750,16,7/13/1972,;
201701018,Joanna,Leinenbach,Finance,1050,15,11/6/1980,;
201003007,Caprice,Suell,Admin,750,18,6/28/1992'''

a = empRecords.strip().split(";")
earn = []
for i in a:
    t = i.split(',')
    cur = int(t[4])*int(t[5])
    earn.append(cur)
    print(cur)
print("Maximum Earning :",max(earn))
试试这个:

empRecords = '''200401003,Luisa,Jurney,Accounting,800,21,4/8/2002,;
200208006,Clorinda,Heimann,Accounting,1050,15,5/21/1994,;
200307014,Dick,Wenzinger,Admin,565,15,10/13/1973,;
200901005,Ahmed,Angalich,Purchasing,750,20,2/10/1973,;
200704013,Iluminada,Ohms,Marketing,750,16,7/13/1972,;
201701018,Joanna,Leinenbach,Finance,1050,15,11/6/1980,;
201003007,Caprice,Suell,Admin,750,18,6/28/1992'''

a = empRecords.strip().split(";")
earn = []
for i in a:
    t = i.split(',')
    cur = int(t[4])*int(t[5])
    earn.append(cur)
    print(cur)
print("Maximum Earning :",max(earn))

您可以使用max,只需保留以前找到的最大值:

highestEarning=0
对于b中的e:
高级学习=最大值((整数(e[4])*整数(e[5])),高级学习)

完成for循环后,HigheSearning将是列表中收入最高的。您可以使用max,只需保留以前找到的最大值:

highestEarning=0
对于b中的e:
高级学习=最大值((整数(e[4])*整数(e[5])),高级学习)
一旦for循环完成,HigheSearning将是列表中收入最高的。

max()
使用iterable,例如列表

您可能试图在单个int上运行max(),但这不起作用,因为它应该如何运行?找到一个值的最大值其实不是一件事

您可以创建
ern
的列表,然后在此列表上使用max()。

max()
使用一个iterable,例如列表

您可能试图在单个int上运行max(),但这不起作用,因为它应该如何运行?找到一个值的最大值其实不是一件事


您可以创建
ern
的列表,然后在此列表上使用max()。

您可以使用
yield
关键字执行任务,方法如下:

import empDataLT as x 

def earn():
    empEarn = list() # convert module to a list
    for er in x.a:
        empErn = er.strip().split(",")
        empEarn.append(empErn)
    b = sorted(empEarn, key=lambda x: x[4])
    for e in b:
        ern = (int(e[4]) * int(e[5])) 
        print(ern)
        yield ern
highest = max(earn())

关于收益率和如何使用的讨论,我建议您可以按照以下方式使用任务的
收益率
关键字:

import empDataLT as x 

def earn():
    empEarn = list() # convert module to a list
    for er in x.a:
        empErn = er.strip().split(",")
        empEarn.append(empErn)
    b = sorted(empEarn, key=lambda x: x[4])
    for e in b:
        ern = (int(e[4]) * int(e[5])) 
        print(ern)
        yield ern
highest = max(earn())

对于收益率和如何使用的讨论,我建议
max()
非常适合整数。你真正的问题是什么?当我在这里使用
max()
时,我得到一个
TypeError的错误:“int”对象是不可编辑的
max()
可以很好地处理整数。你真正的问题是什么?当我在这里使用
max()
时,我得到一个
TypeError的错误:“int”对象是不可编辑的
哦,这非常有效。你介意解释一下它的逻辑吗?它只是将值
cur
附加到列表
earn
中,然后在列表上使用
max
。在最初的示例中,您试图获取单个整数的
max
,而不是可计算的值(例如列表)。这是干净的代码。我不确定哪一个更有效——附加到列表并执行max一次,或者在每次迭代中执行max,但不必附加值(参见:Putnam的答案)。这两种方法都应该有效。哦,这很有效。你介意解释一下它的逻辑吗?它只是将值
cur
附加到列表
earn
中,然后在列表上使用
max
。在最初的示例中,您试图获取单个整数的
max
,而不是可计算的值(例如列表)。这是干净的代码。我不确定哪一个更有效——附加到列表并执行max一次,或者在每次迭代中执行max,但不必附加值(参见:Putnam的答案)。任何一种方法都应该有效。