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