我正在尝试查找变量是列表列表中任何列表的元素。如果它是任何一个元素,那么我正在使用continue
移动到下一个块。如果它不是任何列表的成员,那么我想在列表列表中创建一个新列表,并将该变量作为该列表的唯一条目。
我问的原因是因为if语句被满足,或者没有满足其他迭代,两种情况都会看到相同的结果,这是一个超过这个块的延续。
for group in groups:
if point in group:
continue
else:
# if point not an element of any group,
create group in groups with variable as only element
更新
这会有用吗?有没有更简洁的方法呢?
for group in groups:
if point in group:
groupCheck = 1
else:
pass
if not groupCheck:
# Create a new list including point
答案 0 :(得分:4)
反转您的逻辑,并使用else
循环的for
子句创建新组。
for group in groups:
if point in group:
break
else:
create_new_group(point)
或者只使用any()
。
if not any(point in group for group in groups):
create_new_group(point)
答案 1 :(得分:1)
为什么不将if语句放在循环之外?
found = False
for group in groups:
if point in group:
found = True
break
if not found:
groups.append([point])
答案 2 :(得分:1)
创建一个功能。
def check_matches(point, groups):
for group in groups:
if point in group:
return true
return false
if not check_matches(point, groups):
groups.append([point])
你可以这么简单,取决于你想要用它做什么,或者将它构建成更复杂的功能:
def get_groups(point, groups):
if not check_matches(point, groups):
groups.append([point])
return groups
groups = get_groups(point, groups)
你可以在这里做一些简单的列表理解,但鉴于你对Python的明显新意,我不推荐它们。这是让你感到困惑并在将来犯更多错误的可靠方法。
答案 3 :(得分:1)
尝试使用内置的any()
功能。
if not any(point in group for group in groups):
groups.append([point])