簡體   English   中英

如何在 Python 中創建一個接受數字和整數列表的函數?

[英]How can I create a function in Python that takes a list of numbers and an integer?

我正在尋找創建一個函數,該函數接受一個列表和一個整數作為參數,並以小於第二個參數中的值的非常值的升序輸出列表。

然后,如果整數(第二個參數)的值小於列表中的每個值,該函數將返回一個打印語句,如“這里什么都沒有”。

def thisFunction(mylist=[], *myNum):
    print(mylist)
    print(*myNum)

    for x in list(int(mylist[0])):
        if x > myNum:
            mylist.remove(x)
            mylist.sort()
        elif x < myNum:
            print(f"There are no values less than numbers{myNum}")


thisFunction([12,4,5,6,7,11,56],5)

現在,我得到一個TypeError: 'int' object is not iterable 我不知道我做錯了什么!

您只能在arg是可迭代的時應用list(args) ,在文檔中定義為“能夠一次返回一個成員的對象”。 因此, list(int(mylist[0]))沒有意義,因為您實際上是在給定示例中的輸入列表的情況下嘗試list(12)

相反,也許您想要做的是使用for循環遍歷給定的列表,將該列表中的每個元素與myNum進行比較,創建一個僅包含小於myNum元素的列表,對創建的列表進行排序,然后打印它. 這是幫助您入門的修訂代碼。 (我做了一些風格上的編輯,使函數更具 Pythonic 和可讀性,return語句替換函數中的print調用等。)

def thisFunction(mylist, myNum):
    if myNum < min(mylist):
        return f"There are no values less than numbers{myNum}"
    else:
        lst = [num for num in mylist if num < myNum]
        lst.sort()
        return lst

我們可以方便地使用min函數檢查mylist是否有任何小於myNum元素。 如果存在小於myNum值,我們將這些元素放在一個名為lst的新列表中,並以其排序狀態返回。

檢查輸出:

>>> print(thisFunction([12,4,5,6,7,11,56],10))
[4, 5, 6, 7]
>>> print(thisFunction([12,4,5,6,7,11,56],3))
There are no values less than 3

暫無
暫無

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

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