我会尽力解释我的担忧。
这个问题是我学习python时的练习活动。
如果第一个列表中的元素大于第二个列表中的元素然后减去,该如何逐个检查?
示例:
# inputted values
list1 = [50,40,90,30]
list2 = [40,50,40,20]
# desired output:
output = [10,40,50,10]
答案 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的元素之差
两种实现方法
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]
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)