地图功能问题

时间:2018-06-15 06:01:05

标签: python function dictionary variables python-3.6

以下是黑客排名代码,x未映射到实例args。有人请告诉我一个原因吗?https://www.hackerrank.com/challenges/python-lists/problem

if __name__ == '__main__':
    N = int(input())
    l=[]
    for _ in range(N):
        line = input().split()
        cmd = line[0]
        args= line[1:] # <=> here we have 0, 1 or 2 parameters, right?
        """if cmd!= "print":
            cmd += "(" + ",".join(args)+")"""
        #x = ",".join(map(str,args))
        if len(args) == 2:
            x, y = map(int, args)
            if cmd == "insert":
                l.insert(x, y)
        elif len(args) == 1:
            x = map(int,args)
            if cmd == "remove":
                l.remove(x)
            elif cmd == "append":
                l.append(x)
        elif cmd == "sort":
                l.sorted()
        elif cmd == "pop":
                l.pop()
        elif cmd =="reverse":
                l.reverse()
        elif cmd == 'print':
                print(l)

2 个答案:

答案 0 :(得分:1)

你的问题在于这一行:

x = map(int,args)

这与您在代码的不同分支中的行不同:

x, y = map(int, args)

原因是第一个将名称x绑定到map来电。它不会解压缩map对象以获取它将产生的单个值。为此你需要:

x, = map(int, args) # note the comma!

但如果您知道args中只有一个值,则根本不需要在其上调用map。只需使用x = int(args[0])代替。

答案 1 :(得分:0)

您的代码中存在几个问题。

  1. x = map(int,args)(第16行),x成为地图对象。要从此映射获取整数,请先将其转换为列表,然后使用索引。 x = list(map(int,args))[0]将解决您的问题。或者您只需使用x = int(args[0])
  2. 列表没有sorted功能,将l.sorted()更改为l.sort()