簡體   English   中英

檢查Python for循環的所有迭代中是否存在某些內容

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM