如果带有列表的语句包含

Gle*_*enn 1 python if-statement

我有一个包含数字的列表(lijstkleur)1,4,6,7.我的范围从0到8.现在我有以下代码:

for x in range(0, len(L), 1):
    if x in lijstkleur == True:
        self.label = Label(self.frame, text=string[x], fg="yellow", bg="red")
        self.label.pack(side=LEFT)
    else:
        self.label = Label(self.frame, text=string[x], fg="white", bg="red")
        self.label.pack(side=LEFT)
Run Code Online (Sandbox Code Playgroud)

但所有的数字都变成了白色,这个if语句出了什么问题

Mar*_*ers 5

无需使用== True:

if x in lijstkleur:
Run Code Online (Sandbox Code Playgroud)

表达式x in lijstkleur==True被解释为(x in lijstkleur) and (lijstkleur == True); 列表永远不会等于布尔值True,因此您最终会进行测试something and False,保证会False相反.这称为比较链,使表达式成为10 < a < 20可能.

您可以简化您的range()通话len(L):

for x in range(len(L)):
Run Code Online (Sandbox Code Playgroud)

并且无需重复.pack()呼叫:

if x in lijstkleur:
    self.label=Label(self.frame,text=string[x],fg="yellow",bg="red")
else:
    self.label=Label(self.frame,text=string[x],fg="white",bg="red")
self.label.pack(side=LEFT)
Run Code Online (Sandbox Code Playgroud)