簡體   English   中英

如何從滿足條件的元組中返回最后一個元素編號?

[英]How can I return the last element number from a tuple that satisfies a condition?

如何返回排序元組中an最大數字,但仍小於給定數字(比率)?

這是我的代碼:

def returnPrevious(width, height):
    an = (2,3,4,6,8,9,12)
    z = -1
    for i in an:
        if (width//height) >= i:
         z += 1   
        else: break
    return an[z]

如果您顛倒數字的順序,那么您可以只返回第一個匹配項:

def returnPrevious(width, height):
    an = (12,9,8,6,4,3,2)
    for i in an:
        if width//height >= i:
            return i
    return None

您甚至可以使用next()在單個語句中執行此操作,它從可迭代對象中返回第一個元素,或者如果可迭代對象為空,則返回我們選擇的默認值 ( None )。

def returnPrevious(width, height):
    return next((i for i in (12,9,8,6,4,3,2) if width//height >= i), None)

你可以改用這樣的東西,你不會擺脫 z,但它更干凈

def returnPrevius(width, height):
    an = (2,3,4,6,8,9,12)
    z = None
    for i in an:
        if (width//height) >= i:
         z = i  
        else: break
    return z

你可以這樣做

import itertools
def findLast(w,h):
   r = w//h
   return list(itertools.takewhile(lambda e: e < r, an))[-1]

或者

def findLast(w,h):
   r = w//h
   return [e for e in an if e < r][-1]

但它構建了一個列表,您不需要只從中獲取最后一個元素。

您可以做的是反轉列表並找到與您的條件匹配的第一個元素,然后您不需要記住前一個元素。 但是你仍然需要處理沒有這樣的元素的情況。 或者將 0 作為最后一個元素添加到反向列表中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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