末尾“,0”的含义

时间:2019-03-24 06:59:51

标签: python python-3.x

当我删除“,0”时,它会引发错误,当它出现时,它会显示正确的输出。我想知道它的用途。

import sys
from collections import Counter
input()
socks,pairs = Counter(map(int,input().strip().split())),0
for s in socks:
     pairs = pairs + socks[s] // 2
print(pairs)

3 个答案:

答案 0 :(得分:2)

您将在此行中分配两个变量(sockspairs):

socks,pairs = Counter(map(int,input().strip().split())),0

如果省略,0,就好比写:

socks = Counter(map(int,input().strip().split()))
pairs = 

出现错误。

答案 1 :(得分:1)

此:

socks, pairs = Counter(map(int,input().strip().split())), 0

翻译为:

(socks, pairs) = (Counter(map(int,input().strip().split())), 0)

就好像您写了:

socks = Counter(map(int,input().strip().split()))
pairs = 0

右边的区别在分配作业之前已得到充分评估,但这在这里无关紧要

但是元组的大小必须匹配。省略,0时,它将变为:

(socks, pairs) = (Counter(map(int,input().strip().split())), )

如您所见,大小不匹配。这就是导致问题的原因。

答案 2 :(得分:0)

这称为元组分配。例如,如果您要初始化两个变量x和y并为其分配两个值a和b,则可以使用以下方法做到这一点:

x = a
y = b

或者只是:

x, y = a, b

在这种情况下,第一个值“ a”将分配给第一个变量“ x”,第二个值“ b”将分配给第二个变量“ y”。在这种情况下,无需使用temp变量即可交换两个值,这非常强大:     x,y = y,x

在您的情况下,您要初始化两个变量:袜子和袜子,因此必须跟随两个值。就您而言:

socks = Counter(map(int, input().strip().split()))
pairs = 0

因此,很明显您不能将一个值分配给两个变量。因此您无法删除0(成对的初始值),它是在循环时在其上累积的保留变量。