使用循环

时间:2017-04-17 21:50:09

标签: python python-3.x for-loop

我正在尝试在python中编写一个for循环来弹出列表中的所有项目但是两个,所以我尝试了这个:

guest = ['john', 'phil', 'andy', 'mark', 'frank', 'joe']

for people in guest:
  popped_guest = guest.pop()
  print("I am sorry " + popped_guest + " I can no longer invite you to dinner")

这就是我运行它时得到的结果:

我很抱歉,我不能再邀请你去吃饭了

对不起坦白我不能再邀请你去吃饭了

对不起,我不能再邀请你去吃饭了

所以它只会弹出3但有没有办法让它弹出6中的4个?我尝试添加if语句:

guest = ['john', 'phil', 'andy', 'mark', 'frank', 'joe']

for people in guest:
  if people > guest[1]:
    popped_guest = guest.pop()
    print("I am sorry " + popped_guest + " I can no longer invite you to dinner")

我会想到,因为'phil'将会是1,它会弹出最后4个但是当我运行程序时它什么也没有返回。那么有可能在一个for循环中做到吗?

7 个答案:

答案 0 :(得分:4)

如果你想要弹出4件事,那就算上4个

for _ in range(4):
    popped_guest = guest.pop()
    print("I am sorry " + popped_guest + " I can no longer invite you to dinner") 

答案 1 :(得分:2)

你的for循环在第3次循环后停止,因为这是在弹出最后几个元素后留在guest中的元素数。您可以使用while循环连续弹出元素,直到列表保留2个元素。

while len(guest) > 2:
    popped_guest = guest.pop()
    ...

答案 2 :(得分:1)

这种行为的原因是当你在Python中使用for循环时,它实际上通过索引号遍历列表。因此,当您循环遍历列表并同时对其进行时,可能会跳过一些元素。更好的方法是在循环原始列表的同时改变列表的副本。

答案 3 :(得分:1)

如上所述,您的代码完全没有按照您的想法进行操作,因为您正在积极地迭代它,从而将元素从列表中弹出。我会说“一个更好的编码实践就是复制列表以便弹出”,但这不是一个“更好”的练习 - 你的方式根本不能按照你想要的方式工作,它总会弹出列表的前半部分。

我会问自己“如何指定在当前迭代中弹出的人”,以及“我在哪里设置当前迭代中弹出的人数”。两个问题的答案似乎都是“我没有。”

答案 4 :(得分:0)

+-----------------------+-------+
|   Items   |   Values  |   QTY |   
+-----------------------+-------+
|   A-22    |   50      |   2   |
+-----------------------+-------+
|   B-11    |   20      |   1   |
+-----------------------+-------+
|   C-33    |   70      |   1   |
+-----------------------+-------+
|   D-54    |   40      |   1   |
+-----------------------+-------+
|   11      |   30      |   1   |
+-----------------------+-------+
|   22      |   10      |   1   |
+-----------------------+-------+
|   22-X    |   60      |   2   |
+-----------------------+-------+

答案 5 :(得分:0)

我正在添加一些代码,希望它可以为您提供帮助。

text = ["hello", "world"]

while True:
    try:
        val = text.pop()
        print(val)
    except IndexError:
        return

答案 6 :(得分:0)

为了让 2 个值仍然在列表中。 当列表长度未知时。

guest = ['john', 'phil', 'andy']

except2 = (len(guest)) - 2

for i in range(except2):
    popped_guest = guest.pop()
    print("I am sorry " + popped_guest + " I can no longer invite you to dinner") 
    
else:
    for i in guest:
        print(f"You are invited  {i}")
I am sorry andy I can no longer invite you to dinner
You are invited  john
You are invited  phil

[Program finished]