python - 将 2 个列表汇总到另一个列表中

标签 python python-3.x

我有 2 个输入列表,如下面的小示例,我想对它们进行总结:

小例子:

a = [4, 5, 2]
b = [3, 5, 4]

我想逐项比较这两个列表并基于这些 比较会给每个列表打分。如果两个列表相等 会得到 0 分,并且一个列表中的项目更大,该列表将 获得分数 1。最后结果将是一个列表(名为 RES) 有 2 件元素。第一项是 a 的所有结果的总和 的第 2 项是 b 的所有结果的总和。 在此示例中,我比较 a 和 b 的第 1 项,由于 4 > 3,a 会 得到分数 1。通过比较其他 2 个项目,两个列表都会得到 0 第 2 项和 b 对于第 3 项将得到 1。通过所有的总和 所有比较的分数,a 会得到 1 (1+0+0),b 会得到 1 也是(0+0+1)。 这是这个小示例的预期输出:

RES = [1, 1]

为了得到这个结果,我用 python 编写了以下代码:

def fun(a, b):
    for i in range(len(a)):
        if a[i] > b[i]:
            AL = 1
        elif a[i] == b[i]:
            AL = BL = 0
        elif a[i] < b[i]:
            BL = 1
    RES = list(AL, BL)
    return RES

但它没有返回我想要的。你知道如何解决吗?

最佳答案

代码中的一些问题

  • RES = list(AL, BL) 不是定义包含两个元素的列表的方式,您需要使用 RES = [AL,BL] 来代替<
  • 您不会为每次迭代更新 ALBL,而是将其重置为新值
  • 您需要在循环之前初始化 ALBL

所以更新代码可能如下所示

a = [4, 5, 2]
b = [3, 5, 4]

def fun(a, b):
    #Initialize AL and BL
    AL = 0
    BL = 0
    #Increment AL and BL according to the conditions
    for i in range(len(a)):
        if a[i] > b[i]:
            AL += 1 
        elif a[i] < b[i]:
            BL += 1

    #Make a list and return it
    return [AL, BL]

print(fun(a,b))

作为额外的优化,您可以使用 zip并行迭代两个列表

a = [4, 5, 2]
b = [3, 5, 4]

def fun(a, b):
    #Initialize AL and BL
    AL = 0
    BL = 0
    #Increment AL and BL according to the conditions, and iterate on them via zip
    for a,b in zip(a,b):
        if a > b:
            AL += 1
        elif a< b:
            BL += 1

    #Make a list and return it
    return [AL, BL]

print(fun(a,b))

两种情况下的输出都是相同的

[1, 1]

关于python - 将 2 个列表汇总到另一个列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56422990/

相关文章:

python - 如何使用 Pyvmomi 创建带有附加 vmdk 磁盘的虚拟机(非克隆)?

python - _mysql_exceptions.OperationalError

python - 是否有 Python 命名元组的替代品

python - 绘制一个二维数组,轴上标有一维数组的数组值

python - 对齐返回元组而不是 Pandas DataFrame

python - 带有 Google Cloud Endpoint (Python) 的简单访问 API(开发人员 key )

python - 除了某些字段外,如何检查 2 个字典是否相等?

python-3.x - 在要抓取的网站上找不到 BeautifulSoup 的类名

python-3.x - 如何在 Python 中查找表情符号的 unicode 平面

python - 如何登录 Appengine 中的任意用户以使用 Drive SDK?