我正在尝试在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循环中做到吗?
答案 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]