如何使用for循环在Python中比较两个列表?

时间:2020-05-31 09:05:04

标签: python list for-loop if-statement

我正在做一个练习,问我以下任务。我在第三个堆栈中:

  1. 创建两个名为gandalf和saruman的变量,并为其分配法术强度列表。创建一个名为spells的变量来存储巫师施放的咒语数量。

    spells = 10
    gandalf = [10, 11, 13, 30, 22, 11, 10, 33, 22, 22]
    saruman = [23, 66, 12, 43, 12, 10, 44, 23, 12, 17]
    
  2. 创建两个名为gandalf_wins和saruman_wins的变量。将它们都设置为0。 您将使用这些变量来计算每个巫师获胜的冲突次数。

    gandalf_wins=0
    saruman_wins=0
    
  3. 使用两个巫师的咒语列表,更新变量gandalf_wins和saruman_wins以计算每个巫师赢得一次冲突的次数。

我的解决方案是,但不比较列表中的所有元素,您能帮我吗?

for spells in saruman, gandalf:
    if gandalf>saruman:
        gandalf_wins += 1
    elif saruman>gandalf:
        saruman_wins += 1

print("Total gandalf wins:", gandalf_wins)
print("Total saruman wins:", saruman_wins)

2 个答案:

答案 0 :(得分:0)

问题在于for循环的定义方式。您应该遍历列表中的元素,然后进行比较。

for s, g in zip(saruman, gandalf):
    if g>s:
        gandalf_wins += 1
    elif s>g:
        saruman_wins += 1

答案 1 :(得分:0)

您可以使用zip()来创建成对的咒语,因此可以轻松地比较它们:

gandalf_wins=0
saruman_wins=0

gandalf = [10, 11, 13, 30, 22, 11, 10, 33, 22, 22]
saruman = [23, 66, 12, 43, 12, 10, 44, 23, 12, 17]

for spells in zip(saruman, gandalf):
    # iterations look like: [(10, 23), (11, 66), (13, 12)...]
    gandalf_spell_power = spells[0]
    saruman_spell_power = spells[1]

    if gandalf_spell_power>saruman_spell_power:
        gandalf_wins += 1
    elif saruman_spell_power>gandalf_spell_power:
        saruman_wins += 1

print("Total gandalf wins:", gandalf_wins)
print("Total saruman wins:", saruman_wins)

输出:

('Total gandalf wins:', 4)
('Total saruman wins:', 6)