【问题标题】:How to evaluate the sum of list only for few elements如何仅针对少数元素评估列表的总和
【发布时间】:2021-06-27 08:07:10
【问题描述】:

我有列表和 k = 8(最大和)。我想添加总和等于或小于 k = 8 的列表元素,并且我只想要我添加的元素的数量。

我尝试过的:

lst = [1,2,3,4,7,9,12]
final = []
sum = 0
for i in range(len(lst)):
    if sum < 8:
        sum = sum +i
        final.append(i)
print(final)         

列表已排序。它可能未按用户输入排序。首先,我将对列表进行排序。然后我将检查条件并逐个添加并仅附加这些元素。

由于这段代码没有给出我想要的正确输出,我该怎么办?

【问题讨论】:

  • THe for i in range()
    仅给出数组中元素的索引。
    你需要访问数组的元素。所以,有两种方法可以做到这一点。
    1) ``` for i in range(len(arr)): arr[i] ``` or
    2) ``` for i in arr: print(i) ``` where上面的循环可以用来访问数组中的元素。
  • 避免使用sum 作为变量名。 sum 是 Python 中的关键字。
  • @Ram 是内置函数的名称,但不是关键字。如果它是一个关键字,那么 try 分配给它将是一个语法错误。
  • @kaya3 是的。这是一个内置功能。

标签: python python-3.x


【解决方案1】:

根据我从您的问题中了解到的情况。

你会得到一个元素列表(不一定是排序的)和一个值k。您必须返回列表中总和小于或等于k 的项目。

这里是代码

lst = [1,2,3,4,7,9,12]
lst.sort()
final = []
sums = 0
k = 10
for i in lst:
    if sums + i <= k:
        sums = sums + i
        final.append(i)
print(final)

# Output

final = [1, 2, 3, 4]

【讨论】:

    【解决方案2】:

    正如 Aravind 所说。i 是索引而不是值

    lst = [1,2,3,4,7,9,12]
    final = []
    sum = 0
    for item in lst:
        if sum < 8:
            sum = sum +item
            final.append(item)
    print(final)
    

    并且根据 Ram.you 不应该使用 sum 作为变量。在 python 中是一个关键字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-05
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多