📜  Python|前N个匹配条件的求和

📅  最后修改于: 2022-05-13 01:55:26.093000             🧑  作者: Mango

Python|前N个匹配条件的求和

可以使用许多内置函数对列表中的元素求和。正态求和函数在各个领域都有很多应用。本文讨论仅对匹配特定条件的元素的前 N 次出现求和。

方法#1:朴素的方法
我们可以对符合条件的元素求和,在元素出现 N 次后,我们可以停止操作。下面的代码演示了相同的内容。

# Python 3 code to demonstrate 
# Summation of first N matching condition
# using Naive Method 
  
# initializing list
test_list = [3, 5, 1, 6, 7, 9, 8, 5]
  
# printing original list
print ("The original list is : " + str(test_list))
  
# using Naive Method 
# Summation of first N matching condition
# sums first 3 odd occurrences
counter = 1
res = 0
for i in test_list:
    if counter <= 3 and (i % 2 != 0):
        res = res + i
        counter = counter + 1
  
# printing result
print ("The filtered list is : " + str(res))
输出 :
The original list is : [3, 5, 1, 6, 7, 9, 8, 5]
The filtered list is : 9

方法 #2:使用sum() + list comprehension
这是执行此特定任务的不同而优雅的方式。它过滤掉所有小于等于 N 的数字并根据条件求和。这是完成此任务的一种方法和首选方法。

# Python 3 code to demonstrate 
# Summation of first N matching condition
# using sum() + list comprehension
  
# initializing list
test_list = [3, 5, 1, 6, 7, 9, 8, 5]
  
# printing original list
print ("The original list is : " + str(test_list))
  
# using sum() + list comprehension
# to sum first N elements matching condition 
# sum first 3 odd occurrences
res = sum([i for i in test_list if i % 2 != 0][:3])
  
# printing result
print ("The filtered list is : " + str(res))
输出 :
The original list is : [3, 5, 1, 6, 7, 9, 8, 5]
The filtered list is : 9