在Python3中对多个列表进行For循环以生成一条语句

在Python3中对多个列表进行For循环以生成一条语句,python,python-3.x,Python,Python 3.x,如果这是一个重复的问题,我很抱歉。我花了一个小时试图找到答案,并测试了一些理论,但没有成功。在不发布我正在编写的全部代码的情况下,我只发布代码片段 基本上,我需要将这些for循环语句全部打印到一行中,以便为每个员工运行 i、 雇员山姆31岁,他们的头衔是数据分析师,年收入9万美元。他们2017年的奖金将为2700美元。” 您可以使用在并行列表中进行集体迭代 for name, age, job, salary, bonus in zip(names, ages, jobs, salaries,

如果这是一个重复的问题,我很抱歉。我花了一个小时试图找到答案,并测试了一些理论,但没有成功。在不发布我正在编写的全部代码的情况下,我只发布代码片段

基本上,我需要将这些for循环语句全部打印到一行中,以便为每个员工运行

i、 雇员山姆31岁,他们的头衔是数据分析师,年收入9万美元。他们2017年的奖金将为2700美元。”

您可以使用在并行列表中进行集体迭代

for name, age, job, salary, bonus in zip(names, ages, jobs, salaries, bonuses):
    print ("Employee %s" % name)
    print ("is %s years old" % age)
    print (", their job title is %s" % job)
    print (" and they make %s annually" % salary)
    print ("Their 2017 bonus will be %s." % bonus)
这将使消息的每一部分仍保留在单独的行上,因为它们是单独的打印语句。相反,您可以将它们合并为一个
打印

for name, age, job, salary, bonus in zip(names, ages, jobs, salaries, bonuses):
    print ("Employee %s is %s years old. Their job title is %s, and "
           "they make %s annually. Their 2017 bonus will be %s."
           %(name, age, job, salary, bonus))

zip
将它们放在一起,理想情况下,使用格式字符串来减少整个行,因为它们都使用相同的格式:

emps = zip(names, ages, jobs, salaries, bonuses)
fmt = ("Employee {} is {} years old, their job " 
       "title is {} and they make {} annually. " 
       "Their 2017 bonus will be {}.")
for emp in emps:
    print(fmt.format(*emp))

相应地调整
fmt
中的格式。

如果您确定所有列表的长度相同,也可以通过索引访问列表

for i in range(len(names)):
    print(names[i], ages[i], jobs[i], salaries[i], bonuses[i])

我个人并不认为这会使代码的可读性比使用
zip

更差,因为这可能是伟大答案的重复。也许你还应该添加
end=”“
print
函数中的
参数以获得一行输出。@SamChats是的,这很有意义。只需将
print
s组合到一条语句中可能会更容易。
for i in range(len(names)):
    print(names[i], ages[i], jobs[i], salaries[i], bonuses[i])