【问题标题】:Comparing the elements of two tuples in a list比较列表中两个元组的元素
【发布时间】:2021-06-20 06:07:48
【问题描述】:

我有一个问题。我在下面给出了一个列表

a = [([a, b, c, d], [e, f, g, h]),
   ([o, p, q, r], [s, t, u, v])]

所有字母都是变量并保存一个值。我想比较(计算 f1 分数)变量 a 和 e、b 和 f、c 和 g、d 和 h、o 和 s、p 和 t、q 和 u、r 和 v,并将结果存储在 a有 4 个元素的列表,就像列表的第一个元素包含 a 和 e 的结果,第二个元素存储 b 和 f 的结果,依此类推。如何使用 for 循环来做到这一点?我正在使用这个

eq = []
for first, second in a:
for i in range(4):
    fir = first[i]                 #Can be prediction in place of cure
    sec = second[i]

    equal = fir = sec
    # print(equal)
    eq[i].append(equal)

但它给出了一个错误。

     24         equal = fir = sec
     25         # print(equal)
     ---> 26         eq[i].append(equal)
     27 
     28 print(eq[0])

     IndexError: list index out of range

有人可以帮我吗?

【问题讨论】:

  • 欢迎来到 Stackoverflow,请阅读How To Ask。特别关注How To Create MCVE。确保使用适当的标签(编程语言、相关技术等)标记您的问题。您在发布一个好问题上付出的努力越多:一个易于阅读、理解并且是 on topic 的问题 - 它吸引相关人员的机会就越高,您将更快地获得帮助。祝你好运!
  • 你有八对。有八个比较结果。您想如何将它们转换为四个列表?
  • 重复stackoverflow.com/q/68053694/4046632 这是一些家庭作业吗?还是重复帐户?

标签: python python-3.x list for-loop tuples


【解决方案1】:

您的代码中有一些内容:

  • a = [([a, b, c, d], [e, f, g, h]), ([o, p, q, r], [s, t, u, v])] 我假设您不打算在初始化时覆盖变量 a,所以我将使用 arr 代替。
  • equal = fir = sec 比较需要==
  • append 在列表末尾插入。所以你不需要在插入之前索引列表(如eq[i])。但是,如果您想创建两个列表,则首先需要将 eq[i] 声明为一个列表,例如 eq[0] = []; eq[0].append(equal)
  • “还将结果存储在一个包含 4 个元素的列表中”- 该列表将包含 8 个元素,而不是 4 个 - 前 4 个来自 first,接下来的 4 个来自 second

代码:

arr = [([a, b, c, d], [e, f, g, h]),
       ([o, p, q, r], [s, t, u, v])]

eq = []

for first, second in arr:
    for i in range(4):
        fir = first[i]
        sec = second[i]

        equal = fir == sec
        eq.append(equal)
print(eq)

【讨论】:

    【解决方案2】:

    我在代码中列出了一些错误。有一种更简洁的方法,但出于学习目的,我重用了您的代码。

    a = [(['a', 'b', 'c', 'd'], ['a', 'f', 'c', 'h']),
         (['o', 'p', 'q', 'r'], ['s', 't', 'q', 'v'])]
    
    eq = [[], []] # to make it clearer
    
    for i in range(0, len(a)):
        first, second = a[i]
        for j in range(0, len(first)):
            fir = first[j]
            sec = second[j]
            equal = fir == sec # wrong operator: = instead of ==
            eq[i].append(equal) # wrong index, should be outer loop counter
    
    print(eq)
    

    【讨论】:

      猜你喜欢
      • 2019-12-07
      • 2020-07-04
      • 2017-09-01
      • 1970-01-01
      • 2015-11-06
      • 2014-01-07
      • 1970-01-01
      相关资源
      最近更新 更多