如果第二个列表中的元素在第一个列表中的另一个元素上较大,请逐个检查

时间:2019-05-05 12:27:30

标签: python list

我会尽力解释我的担忧。

这个问题是我学习python时的练习活动。

如果第一个列表中的元素大于第二个列表中的元素然后减去,该如何逐个检查?

示例:

# inputted values
list1 = [50,40,90,30]
list2 = [40,50,40,20]


# desired output:
output = [10,40,50,10]

4 个答案:

答案 0 :(得分:3)

您需要一些实际列表,而不仅仅是四个变量。然后这样做。

list1=[50,40, 90, 30]
list2=[40, 50, 40, 20]
output=[p1-p2 if p1>p2 else p1 for (p1, p2) in zip(list1, list2)]
print(output) #==> [10, 40, 50, 10] 

答案 1 :(得分:1)

本质上,您需要一起遍历两个列表并成对比较每个元素,如果输出小于list2中的元素,则输出将为list1中的元素,否则输出将为list2的元素与list1的元素之差

两种实现方法

  1. 通过同时遍历两个列表来理解列表
list1 = [50,40,90,30]
list2 = [40,50,40,20]

print([list1[idx] if list1[idx] < list2[idx] else list1[idx] - list2[idx] for idx in range(len(list1))])

输出为[10, 40, 50, 10]

  1. 通过zip将两个列表一起ping创建的迭代器来迭代列表理解
list1 = [50,40,90,30]
list2 = [40,50,40,20]

print([item1 if item1 < item2 else item1 - item2 for item1, item2 in zip(list1, list2)])

输出为[10, 40, 50, 10]

答案 2 :(得分:0)

我不明白为什么我们都用列表组合来回答一个新的python开发人员,我相信一个新创建的开发人员应该首先以一种更简单的语法开始,并让他们了解有关python的特性(例如列表组合)可以改善他们的代码。
要回答您的问题,
1.您可以使用python内置的zip迭代相同长度的多个列表,该列表以多个iterables作为参数,并返回一个元组,每个迭代器的当前元素在相同的索引处,该函数的工作方式如下; < / p>

list1 = [50,40,90,30]
list2 = [40,50,40,20]

for i1, i2 in zip(list1, list2):
    print(i1, i2)

# result
50, 40
40, 50
90, 40
30, 20

然后2.您可以在每次迭代中开始添加逻辑;

# if you want to store the results use the results list.
results = []
list1 = [50,40,90,30]
list2 = [40,50,40,20]

for i1, i2 in zip(list1, list2):
    if i1 > i2:
        result.append(i1 - i2)
        # or if you don't need to store the results, just use...
        print(i1 - i2)
    else:
        result.append(i1)
        # same here...
        print(i1)

# result
10
40
50
10
# results == [10, 40, 50, 10]

答案 3 :(得分:0)

使用numpy可能会过大,但是syntax简洁明了:

>>> import numpy as np
>>> a1 = np.array([50, 40, 90, 30])
>>> a2 = np.array([40, 50, 40, 20])
>>> np.where(a1 >= a2, a1 - a2, a1)
array([10, 40, 50, 10])