python - 如何在相互映射时循环打印多个列表?
问题描述
通过使用我制作的函数,我想只使用一个循环打印所有员工的记录。
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
所以记录中的两个子列表也需要和奖金一起映射到新的工资列表中。
另外,我需要遍历列表并以上面显示的格式打印所有值。
解决方案
在运行最后一个循环打印之前,您有三个列表:
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
我上面显示的循环中:Sal
zip()
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进行字符串插值
推荐阅读
- haskell - Haskell - 字符递归列表
- javascript - 如何遍历对象数组并将键值作为字符串的一部分返回
- php - HTTP响应内容解析
- javascript - 我怎样才能到达数组内的对象,mylist = [{whole:'thing',code:'a'},{whole:'thing2',code:'b'}]
- javascript - Async\Await with promise 无法正常工作
- php - 警告:http_build_query():参数 1 应为数组或对象 whm api
- html - 使用 CSS 设置 vue 模板样式的问题
- machine-learning - 为范围内的输入值选择机器学习算法
- assembly - 为什么即使ebx中的值大于eax中的值,我的代码也会跳转到return1
- php - 如何修改 WooCommerce 类别小部件以显示子类别(如果它是父类别)并显示兄弟姐妹(如果它是子类别)?