append() 在这个代码片段中是如何工作的?与特定变量混淆[重复]

Posted

技术标签:

【中文标题】append() 在这个代码片段中是如何工作的?与特定变量混淆[重复]【英文标题】:How does append() work in this code snippet? Confused with a particular variable [duplicate] 【发布时间】:2020-02-05 12:38:51 【问题描述】:

有人可以向我解释这段代码吗? 更具体地说,关于lead.append([sum1 - sum2, 1]) 和print(ans[1],ans[0]) 的部分。

我不明白“lead.append([sum1 - sum2 , 1])”中的“1”

我也不理解 print(ans[1],ans[0]) 中的“1”和“0”。

lead = []
sum1 , sum2 = 0 , 0
for i in range(int(input())):
    a1 , a2 = map(int, input().split())
    sum1 += a1
    sum2 += a2
    if sum1>sum2:
        lead.append([sum1 - sum2 , 1])
    else:
        lead.append([sum2 - sum1 , 2])

ans = max(lead)
print(ans[1],ans[0])

谢谢。

【问题讨论】:

ans[1]ans[0] 都引用列表中的索引 - ans 是一个列表,0 是第一个条目,1 是第二个条目 它是您要附加的列表的第二个元素。 谢谢@Sayse。我没有在那个列表索引链接中找到我需要的东西。但是感谢您的帮助!我很感激! 也感谢您@Corsaka,感谢您的回答! 【参考方案1】:
lead.append([sum2 - sum1 , 2])

这是将括号内的值附加到列表中。

[sum2 - sum1, 2] <- inside the brackets

您所指的 2 或 1 在列表本身内。因此,您会将这些条目附加到列表中。 该代码似乎检查了 sum1/sum2 中的哪一个更大,然后减去较小的那个,将相应的值添加到列表“lead”中。

最后一行,假设列表中的所有项目都是列表本身,应该打印子列表的第二个值,然后是子列表的第一个值。

In [18]: lead = [[100, 2], [200, 1], [400, 3]]

In [19]: max(lead)
Out[19]: [400, 3]

In [20]: ans = max(lead)

In [21]: print(ans[1], ans[0])
3 400

【讨论】:

谢谢!我尽力寻找类似的问题,以免重复自己,但无济于事。还有一个问题 - max() 函数。Q1。 ans 这是一个列表,对吗? Q2。当我们将 max() 用于子列表时,它会找到第一个子列表的最大值(在您的情况下为 100,200 和 400)还是下一个子列表(在您的情况下为 2、1、3)?谢谢! 没问题!我会尽快回答您的问题,目前正忙于工作! 嗨@SuperAwesomeCaptainMcFluffyPa 好的,所以在我给出的示例中,它将首先在每个子列表的第一个条目中查找最大值,在本例中为 400。然后,如果有任何重复值其中,它将搜索第二个条目的最大值,在这种情况下,没有其他值为 [400, X] 的条目,因此选择了 [400, 3]。但是,如果 [400, 7] 存在,这将是上述逻辑的最大值。 哇!谢谢!我真的很感谢你的回答。再次感谢 HollowA :D

以上是关于append() 在这个代码片段中是如何工作的?与特定变量混淆[重复]的主要内容,如果未能解决你的问题,请参考以下文章

这个二叉树代码在java中是如何工作的?

next() 在这个 python 代码中是如何工作的

python中是如何实现将一个函数中定义的变量在另一个函数中改变其值的

哈斯克尔。我很困惑这个代码片段是如何工作的

JOIN 在 MySQL 中是如何工作的?

这个异步调用在我的例子中是如何工作的