比较两个列表与零和更大的数字

时间:2013-03-14 11:47:31

标签: python

我必须比较具有相同长度的两个元素列表。 (作为示例[0,562,256,0,0,856][265,0,265,0,874,958]。两个列表都有一个零的数量和一个高于249的数字。我想比较这些列表。如果在索引处,两个列表都有一个不同于{的数字{1}}数字应该保存在列表中。结果应该是两个长度相同的列表,只有0以上的数字(例如249[256,856])。谢谢为了你的帮助!

2 个答案:

答案 0 :(得分:3)

使用zip()配对每个列表的元素:

listA = [0,562,256,0,0,856]
listB = [265,0,265,0,874,958]

combined = zip(listA, listB)
resultA = [a for a, b in combined if a and b]
resultB = [b for a, b in combined if a and b]

给出:

>>> resultA
[256, 856]
>>> resultB
[265, 958]

您也可以先使用filter()删除其中一个或另一个元素为0的所有对:

combined = filter(lambda (a, b): (a and b), zip(listA, listB))
resultA = [a for a, b in combined]
resultB = [b for a, b in combined]

答案 1 :(得分:0)

也许我们会找到更好的方法,但

list1 = [0,562,256,0,0,856]
list2 = [265,0,265,0,874,958]
rest1 = []
rest2 = []
result1 = []
result2 = []
for i in range(len(list1)):
if list1[i] and list2[i]:
    rest1.append(list1[i])
        rest2.append(list2[i])
for i in range(len(rest1)):
if rest1[i] >249 and rest2[i]>249:
        result1.append(rest1[i])
    result2.append(rest2[i])
print(result1,result1)