2017-06-26 11 views
3

これは重複した質問であれば、ごめんなさい。私は答えを見つけようとしていて、良い一時間を費やして成功していない、いくつかの理論をテストしました。私が作業しているコード全体を投稿することなく、スニペットを投稿するだけです。複数のリストをループしてPython 3で1つのステートメントを作成する

基本的には、ループステートメントのためにすべてを1行にまとめて、各従業員に実行する必要があります。

つまり、「従業員サムは31歳です。彼らの職位はデータアナリストで、毎年$ 90,000です。彼らの2017年のボーナスは$ 2,700のだろう。」

# Employee List 
names = ['Sam', 'Chris', 'Jose', 'Luis', 'Ahmad'] 
ages = ['31', '34', '30', '28', '25'] 
jobs = ['Data Analyst', 'SEO Python Genius', 'Data Analyst', 'Interchange 
Analyst', 'Data Analyst'] 
salaries = ['$90,000', '$120,000', '$95,000', '$92,000', '$90,000'] 
bonuses = ['$2,700', '$3,600', '$2,850', '$2,750', '$2,700'] 


# this for-loop goes through name list 
for name in names: 
    print ("Employee %s" % name) 

for age in ages: 
    print ("is %s" % age, "years old") 

for job in jobs: 
    print (", their job title is %s" % job) 

for salary in salaries: 
    print (" and they make %s" % salary, "annually.") 

for bonus in bonuses: 
    print ("Their 2017 bonus will be %s." % salary) 
+0

[2つのリストを並列処理するにはどうすればよいですか?](https://stackoverflow.com/questions/1663807/how-can-i-iterate-through-two-lists-in-parallel) – kazemakase

答えて

7
あなたが並列リストを通じて一括して反復する zipを使用することができ

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) 

これはまだ別の行にメッセージの各部分、彼らは別のものになるので、 。print文の代わりに、あなたは1 printにそれらを組み合わせることができ:理想的には、これらを一緒

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)) 
+0

素晴らしい答え。おそらく、 'print'関数に' end = ""引数を加えて、1行の出力を得るべきでしょう。 –

+0

@SamChatsはい、それは理にかなっています。おそらく 'print'sを一つのステートメントにまとめるほうが簡単でしょう。 – khelwood

1

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形式を微調整:それらはすべて同じフォーマットを使用するので、全体的なラインをダウン切断するためのフォーマット文字列。

0

すべてのリストの長さが同じであることがわかっている場合は、インデックスでリストにアクセスすることもできます。

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

は、私は個人的に、これはzipを使用する場合と比較して任意の少ない読み取り可能なコードになるとは思いません。

関連する問題