所以我根据适合特定条件的设定范围内的值创建了一个列表,现在稍后我要检查同一范围内的所有值,但不包括放入此列表的值..这可能吗?如果没有,还有其他选择吗?
filled_columns = []
for b in range(0,7):
if board[0,b] == 1 or board[0,b] == 2:
filled_columns.append(b)
for b in range(0,7) #but excluding values from "filled_columns" list
答案 0 :(得分:1)
如果我正确理解您的问题,您可以使用列表理解将项目复制到新列表中,过滤掉您不想要的内容。例如:
list1 = range(20)
filterlist = [4,6,8,9,14]
filtered=[item for item in list1 if item not in filterlist]
print filtered
因此,对于您的示例,请将最后一行替换为:
checklist = [b for b in range(0,7) if b not in filled_columns]
for b in checklist:
# do stuff with b
答案 1 :(得分:1)
有可能,您可以检查另一个for循环中的值b
是否存在于filled_list
中,如果不存在,请执行您的逻辑,如果有,请&# 39;什么都不做。
示例 -
filled_columns = []
for b in range(0,7):
if board[0,b] == 1 or board[0,b] == 2:
filled_columns.append(b)
for b in range(0,7):
if b not in filled_columns:
#do your logic
或者为了获得更好的性能,您可以将fill_columns创建为set
,搜索操作是常量时间。
示例 -
filled_columns = set()
for b in range(0,7):
if board[0,b] == 1 or board[0,b] == 2:
filled_columns.add(b)
for b in range(0,7):
if b not in filled_columns:
#do your logic
答案 2 :(得分:1)
您只想要一个没有填充的列表吗?除非我误解了你的问题,否则这可以在一次通过中完成,没有额外的列表,更不用说集合了
emptycols = [b for b in range(7) if board[0,b] != 1 and board[0,b] !=2]
答案 3 :(得分:1)
您也可以使用套装。
a = list(set(range(7)) - set(filled_columns))