首页 > 解决方案 > 如何在相互映射时循环打印多个列表?

问题描述

通过使用我制作的函数,我想只使用一个循环打印所有员工的记录。

     Record = [["ali", "Mazen", "Fida", "Nader", "Majd"], ["Tutor", "IT", "Manager", "PR", "Clerk"]]
    def Netsal(salary):
        bonus=0
        if salary<2000:
            bonus = 300
        elif salary>=4000:
            bonus = 100
        else:
            bonus = 200
        return salary + bonus
    Sal=[2200,1600,4000,2000,1400]
    holder=[]
    for base_salary in Sal:
        total_salary=Netsal(base_salary)
        holder.append(total_salary)
    for total_salary in Netsal(base_salary):
        print(Record, total_salary)

在打印方面我有点迷茫,因为我需要输出如下:

Mazen - IT : 1900

所以记录中的两个子列表也需要和奖金一起映射到新的工资列表中。

另外,我需要遍历列表并以上面显示的格式打印所有值。

标签: pythonlistloopsprinting

解决方案


在运行最后一个循环打印之前,您有三个列表:

  • Record[0]是一个包含名称的列表
  • Record[1]是一个包含部门的列表
  • holder是一个包含净工资的列表。

zip()可以采用任意数量的可迭代对象(列表是可迭代对象),并从每个可迭代对象返回包含一个元素的元组。该for语句可以将此元组解包成相同数量的变量。

for person, department, salary in zip(Record[0], Record[1], holder):
    print(f"{person} - {department} : {salary}")

您的代码有一个不必要的循环。您可以使用以下列表中的列表删除填充的循环holder并将该逻辑合并到zip我上面显示的循环中:Salzip()

for person, department, base_salary in zip(Record[0], Record[1], Sal):
    net_salary = Netsal(base_salary)
    print(f"{person} - {department} : {net_salary}")

print()语句中,我使用f-strings进行字符串插值


推荐阅读