簡體   English   中英

如何返回真假?

[英]How to return True and False?

我的任務涉及創建一個算法,該算法可以判斷列表是否在升序。 如果列表升序且列表中沒有重復項,則 output 應返回 True,否則如果列表未升序或有重復項,則應返回 False。

我在弄清楚如何返回“True”或“False”而不是我使用字符串打印出來時遇到了問題。

輸入:

def tr1(lis):

  if (len(lis)== len(set(lis)) and (sorted (lis) == lis)) :
    print ("True")
  else:
    print ("False")
tr1([1,2,3,4,4])

output:

False

通常分配/返回 boolean 值,而不是這樣做:

my_result = False

if condition1 and condition2:
    my_result = True
else:
   my_result = False

你可以簡單地做:

my_result = condition1 and condition2

回到你創建集合的問題。

您可以從列表(或任何可迭代對象)創建set ,如下所示:

your_list = [1,2,3,4]

your_set = set(your_list)

if (len(your_set)==len(your_list):
    pass #All elements are unique

集合的主要屬性是它沒有重復項。 因此,如果您的列表長度和您的集合匹配,那么我們可以推斷您列表中的所有元素都是唯一的。


您可以通過首先對列表進行排序然后匹配排序列表是否與原始列表相同來檢查所有元素是否按升序排列。 如果是這種情況,那么您可以推斷列表中的所有元素都按升序排列。

your_list = [1,3,2,4]

sorted_list = sorted(your_list) #[1,2,3,4]

descending_sorted_list = sorted(your_list, reverse=True) #[4,3,2,1]

if (sorted_list == your_list):
    pass #They are in ascending order

AND運算符連接這兩個條件可以驗證這兩個條件。

#This sets a boolean (True/False)
result = (sorted_list == your_list) and (len(your_set)==len(your_list))

同樣,在方法上下文中,您可以直接返回它:

return (sorted_list == your_list) and (len(your_set)==len(your_list))

許多其他帖子都處理了檢測重復項:從列表中創建一個集合並檢查它們的長度; 如果有重復,則集合會更短。

打印 Boolean 值需要考慮Boolean 數據,就像您已經學會考慮數字和文本數據一樣。

print(sorted(lis) == list)

這就是全部情況。 把它們放在一起:

print(sorted(lis) == list and len(set(lis)) == len(lis) )

對於增加或減少測試,您可以使用 python lambda 表達式:

對於減少:

is_decreasing = all(l[i] <= l[i+1] for i in range(len(l)-1))

為了增加:

is_increasing = all(l[i] <= l[i+1] for i in range(len(l)-1))

is_decreasingis_increasing都是 boolean。

暫無
暫無

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

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