gpt4 book ai didi

python - 根据另一个列表和附加条件修改列表

转载 作者:行者123 更新时间:2023-12-04 13:37:22 25 4
gpt4 key购买 nike

我已经删除了之前的问题并重写了它

我有 2 个大小列表 n (假设它是 5):

  • 列表a由非零随机整数组成
  • 列表b它由符合这些标准的随机非负整数组成:
  • 此列表的元素按降序排列。 i第 th 个元素大于或等于 i+1第 1 个元素
  • 这个列表的总和等于一些 f (假设 10 个)

  • 在这里,我要修改列表 b这样除了上面的两个条件,它也符合这个条件:
  • i此列表的第 th 个元素小于或等于 i列表的第 th 个元素 a

  • 如果由于某种原因无法满足所有三个标准,则总和的标准等于 f可能会变松变 f-a哪里 a也从列表中减去 b s 最右边的元素和 a是可能的最小整数(见最后一个例子)

    一些示例( r 是修改后的列表 b ):
    a = [6, 7, 14, 16, 5]
    b = [8, 2, 0, 0, 0]

    r = [6, 4, 0, 0, 0]


    a = [10, 1, 14, 16, 5]
    b = [8, 2, 0, 0, 0]

    r = [8, 1, 1, 0, 0]


    a = [10, 5, 14, 16, 5]
    b = [8, 2, 0, 0, 0] # here, b is already complying to all criteria and result should not change

    r = [8, 2, 0, 0, 0]

    # another example where this list is of size 14 with `f` being also 14
    a = [7, 5, 14, 16, 5, 7, 203, 22, 10, 4, 5, 8, 12, 9]
    b = [8, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

    r = [7, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

    a = [5, 1, 1, 1, 1]
    b = [8, 2, 0, 0, 0]

    r = [5, 1, 1, 1, 1]

    我的 numpy方法适用于 b 的情况不需要任何编辑:

    a = [10, 5, 14, 16, 5]

    b = [8, 2, 0, 0, 0]

    def edit(a, b):
    a_ = np.array(a)
    b_ = np.array(b)
    criteria_check = (a_[:len(b_[b_>0])] >= b_[b_>0])
    if criteria_check.all():
    return b
    else:
    pass


    edit(a, b)
    [8, 2, 0, 0, 0]

    添加另一种方法来解决 numpy 中的最后一个示例案例:

    a = [5, 1, 1, 1, 1]
    b = [8, 2, 0, 0, 0]

    a = np.array(a)
    b = np.array(b)

    def edit2(f, s):
    diff = f - s
    s[(s + diff).cumsum()<sum(s)] = (s + diff)[(s + diff).cumsum()<sum(s)]
    return s

    最佳答案

    此解决方案适用于您的所有测试用例:

    def solve(a, b):
    f = 0
    for i in range(len(a) - 1):
    if (a[i] < b[i]):
    b[i+1] += (b[i] - a[i])
    b[i] = a[i]
    f += a[i]
    else:
    f += b[i]

    x = 0
    if sum(b) > sum(a):
    x = sum(b) - sum(a)

    b[-1] = sum(b) - f - x

    return b

    关于python - 根据另一个列表和附加条件修改列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61014669/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com