[英]Checking if something is true in all iterations of a Python for loop
我試圖找到一個變量是列表列表中任何列表的元素。 如果它是其中任何一個的元素,那么我正在使用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
反轉邏輯,並使用for
循環的else
子句創建新組。
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)
為什么不把if語句放在循環之外呢?
found = False
for group in groups:
if point in group:
found = True
break
if not found:
groups.append([point])
做一個功能。
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的明顯新意,我不推薦它們。 這是讓你感到困惑並在未來犯更多錯誤的可靠方法。
嘗試使用內置的any()
函數。
if not any(point in group for group in groups):
groups.append([point])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.