如果带有列表的语句包含

时间:2013-04-03 16:10:47

标签: 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)

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

2 个答案:

答案 0 :(得分:5)

无需使用== True

if x in lijstkleur:

表达式x in lijstkleur==True被解释为(x in lijstkleur) and (lijstkleur == True);列表永远不会等于布尔True,因此您最终会测试something and False,而不是False。这称为comparison chaining,使10 < a < 20之类的表达成为可能。

您可以将range()来电简化为len(L)

for x in range(len(L)):

并且无需重复.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)

答案 1 :(得分:1)

您的条件不是评估您的想法。它正在这样做:

if (x in lijstkleur) and (lijstkleur==True):

lijstkleur==True的结果总是False,因为列表永远不会等于布尔值,所以条件总是返回False。你想要的是这个:

if x in lijstkleur: