你好我想比較兩個列表這樣Python的比較兩個列表
A = [1,2] B = 10,20] 比較(A,B)將返回真,如果在每個元素是>對應在b
所以比較([1,2]> [3,4])爲True
比較([1,20]> [3,4])爲假
hiow到元件pythonic way的用法和樣例:
乾杯
你好我想比較兩個列表這樣Python的比較兩個列表
A = [1,2] B = 10,20] 比較(A,B)將返回真,如果在每個元素是>對應在b
所以比較([1,2]> [3,4])爲True
比較([1,20]> [3,4])爲假
hiow到元件pythonic way的用法和樣例:
乾杯
使用zip:
len(a) == len(b) and all(j > i for i, j in zip(a, b))
我不完全相信你在找什麼,因爲在你的例子所示的結果似乎違揹你說你就想回來,也沒有指定什麼希望如果兩個列表的長度不相等或兩者都爲空。
由於這些原因,我的答案明確地處理了大多數這些情況,因此您可以輕鬆地對其進行更改以滿足您的需求。我也已經完成了一個謂詞函數的比較,所以也可以改變。尤其要注意最後三個測試用例。
順便說一句,@Mike Axiak的答案如果非常好,如果他所有的隱含假設都是正確的。
def compare_all(pred, a, b):
"""return True if pred() is True when applied to each
element in 'a' and its corresponding element in 'b'"""
def maxlen(a, b): # local function
maxlen.value = max(len(a), len(b))
return maxlen.value
if maxlen(a, b): # one or both sequences are non-empty
for i in range(maxlen.value):
try:
if not pred(a[i], b[i]):
return False
except IndexError: # unequal sequence lengths
if len(a) > len(b):
return False # second sequence is shorter than first
else:
return True # first sequence is shorter than second
else:
return True # pred() was True for all elements in both
# of the non-empty equal-length sequences
else: # both sequences were empty
return False
print compare_all(lambda x,y: x>y, [1,2], [3,4]) # False
print compare_all(lambda x,y: x>y, [3,4], [1,2]) # True
print compare_all(lambda x,y: x>y, [3,4], [1,2,3]) # True
print compare_all(lambda x,y: x>y, [3,4,5], [1,2]) # False
print compare_all(lambda x,y: x>y, [], []) # False
您應該花更多時間來編寫您的問題。使用4個空格縮進設置代碼塊,檢查拼寫,並嘗試使用適當的英文標點符號。如果你花時間寫出你的問題,人們更可能花時間回答。 – 2010-10-03 02:10:06
你說過「b中的每個元素都是> b中的對應元素」,對於[1,2]> [3,4] =真是這樣嗎? – 2010-10-03 04:16:18