出于某种原因,这段代码:
def display_jan_appointments():
for item in appointment_dates:
if item[0:2] == "01" and item[3:5] == "01" and not adding:
pygame.draw.ellipse(screen, BLUE, [915, 275, 20, 20])
jan_1_index.append(appointment_dates.index(item))
jan1 = True
global jan1
无限地将项目的索引添加到jan_1_index列表中。我不知道为什么,因为if语句应该只迭代一次,因为它不是while语句。这是代码在函数中,还是其他东西?
编辑:当我打印出列表时,它会输出:
[0]
[0, 0]
[0, 0, 0]
[0, 0, 0, 0]
[0, 0, 0, 0, 0]
等等。
双重编辑:我制作了一小段代码,包含了所有必要的内容。
appointment_dates = ["01/01", "01/01"]
jan_1_index = []
adding = False
for item in appointment_dates:
if item[0:2] == "01" and item[3:5] == "01" and not adding:
jan_1_index.append(appointment_dates.index(item))
print(jan_1_index)
然而,这段代码输出的列表就像它应该的那样,只是[0,0]。这是为什么?
答案 0 :(得分:2)
代码的两个问题 - list.index
将始终返回第一个匹配的索引 - 所以有效地,您将获得重复的索引。另一个问题(很难从你的代码中说出来)可能是某些东西在变异appointment_dates
......
Pythonic的方法是使用list-comp,例如:
jan_1_index = [
idx for idx, item in enumerate(appointment_dates)
if item[:2] == '01' and item[3:5] == '01' # and not adding
]