我試圖制作一個程式來比較兩個串列,如果它們都具有相同的變數,則回傳“True”,否則回傳“False”。
代碼是:
def are_lists_equall(list1, list2):
if len(list1) == len(list2) and list1.sort() == list2.sort():
return True
else:
return False
list1 = [0.6, 1, 2, 3]
list2 = [9, 0, 5, 10.5]
print(are_lists_equall(list1, list2))
輸出是:
True
為什么?
uj5u.com熱心網友回復:
它們的長度是 4,所以第一個是 true 并且 sort() 方法不回傳任何值。相反,它會更改原始串列。就像是
if 4 == 4 and None == None:
這就是為什么它的真實和真實
如果要確保比較這些串列,請使用 sorted() 方法:
sorted(list1) == sorted(list2) 會給你 False
uj5u.com熱心網友回復:
您好,歡迎來到堆疊溢位。
該sort方法對串列本身進行排序并且不回傳已排序的串列,實際上sort()回傳 None。
所以長度相等并且 None == None -> 因此你得到True.
你應該寫:
def are_lists_equall(list1, list2):
if len(list1) == len(list2):
list1.sort()
list2.sort()
if list1 == list2:
return True
else:
return False
else:
return False
list1 = [1, 2, 3, 4]
list2 = [2, 1, 3, 4]
print(are_lists_equall(list1, list2))
我建議你也閱讀這篇很棒的文章:https : //www.tutorialspoint.com/how-to-compare-two-lists-in-python
uj5u.com熱心網友回復:
您應該使用兩個串列的值創建臨時變數,以便對它們進行排序和比較:
def are_lists_equall(list1, list2):
l1 = list1
l1.sort()
l2 = list2
l2.sort()
if l1 == l2:
return True
else:
return False
list1 = [0.6, 1, 2, 3]
list2 = [9, 0, 5, 10.5]
print(are_lists_equall(list1, list2))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/342469.html
上一篇:我如何繪制漸近線
下一篇:轉換索引“等級”中的點串列
