我是python的初學者,我有一個問題。如何將一個函式的結果傳遞給另一個函式。我想根據第一個僅使用素數來創建新串列,當我運行我的程式時,第二個串列是空的
def get_list_of_int_numbers(n: int):
list1 = [random.randint(10, 100) for x in range(random.randint(10, 100))] * n
return list1
def get_prime_digits(n: int) -> bool:
return n in [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37,
41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97.]
def get_second_list_based_on_old_one_with_prime_digits(expression: list) -> list:
list2 = [n for n in expression if n == get_prime_digits(n)]
return list2
def main() -> None:
n1 = random.randint(10, 100)
print(get_list_of_int_numbers(n1))
print(get_second_list_based_on_old_one_with_prime_digits(get_list_of_int_numbers(n1)))
if __name__ == '__main__':
main()
任何幫助,將不勝感激
uj5u.com熱心網友回復:
問題出在你的get_second_list_based_on_old_one_with_prime_digits,你不需要用來n與結果進行比較get_prime_digits
def get_second_list_based_on_old_one_with_prime_digits(expression: list) -> list:
list2 = [n for n in expression if n == get_prime_digits(n)]
# ^^^^
return list2
uj5u.com熱心網友回復:
好吧,我不知道為什么第二個列印的串列總是空的,但它肯定不會使用您第一次呼叫時創建的值get_list_of_int_numbers(...)。
這是因為您沒有將第一次呼叫的結果保存get_list_of_int_numbers(...)到變數中。第二次呼叫它,創建一個不同的串列。
def main() -> None:
n1 = random.randint(10, 100)
new_list : list = get_list_of_int_numbers(n1) # Save first list here
print(get_second_list_based_on_old_one_with_prime_digits(new_list)) # Reuse first list
uj5u.com熱心網友回復:
您的代碼有兩個主要問題。
首先,您沒有將第一次呼叫的結果保存到get_list_of_int_numbers.
其次,您的get_second_list_based_on_old_one_with_prime_digits函式 comparen == get_prime_digits(n)總是為 false b/cget_prime_digits回傳一個布林值。
就像是:
def get_second_list_based_on_old_one_with_prime_digits(expression: list) -> list:
list2 = [n for n in expression if get_prime_digits(n)]
return list2
def main() -> None:
n1 = random.randint(10, 100)
n1_list = get_list_of_int_numbers(n1)
print(n1_list)
print(get_second_list_based_on_old_one_with_prime_digits(n1_list))
應該對你更好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/520309.html
標籤:Python列表功能
下一篇:在Python中查找和替換字符
