你好我想比较两个列表这样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