【发布时间】:2016-03-08 20:49:31
【问题描述】:
我正在制作一个 fltk python 程序并想简化:
for i in range(9):
if b[i].label()==b[i+3].label()==b[i+6].label():
...
如何通过在列表中比较它们来检查它们是否相同
l=[i,i+3,i+6]
并让它尽可能简单地与上面的代码做同样的事情。
【问题讨论】:
我正在制作一个 fltk python 程序并想简化:
for i in range(9):
if b[i].label()==b[i+3].label()==b[i+6].label():
...
如何通过在列表中比较它们来检查它们是否相同
l=[i,i+3,i+6]
并让它尽可能简单地与上面的代码做同样的事情。
【问题讨论】:
您可以使用reduce 和bool
In [9]: myList = [1,1,1,1,1]
In [11]: bool(reduce(lambda x,y: x if x == y else False, myList))
Out[11]: True
In [14]: myList = [1,1,1,1,1,2]
In [15]: reduce(lambda x,y: x if x == y else False, myList)
Out[15]: False
或set
In [22]: myList = [1,1,1,1,1,2]
In [23]: len(set(myList)) == 1
Out[23]: False
【讨论】: