HackerRank Lists

//题意:题目自定一种对list操作的简单方法,每次告诉你一个操作,以及一些操作规则,按照操作规则完成即可

//思路:按照最简单思路,将所有操作枚举出来,当然还有一种用eval的方法这种很简便,见代码(还是按照c++思路写的,没有switch,就只能用if了):

# python3
if __name__ == '__main__':
    N = int(input())
    lst = []
    ans = []
    for _ in range(N):
        ans = input().split()
        if ans[0] == 'insert':
            lst.insert(int(ans[1]), int(ans[2]))    #一定注意这些操作数都是int型的数
        elif ans[0] == 'print':
            print(lst)
        elif ans[0] == 'remove':
            lst.remove(int(ans[1]))         #一定注意这些操作数都是int型的数
        elif ans[0] == 'append':
            lst.append(int(ans[1]))         #一定注意这些操作数都是int型的数
        elif ans[0] == 'sort':
            lst.sort()
        elif ans[0] == 'reverse':
            lst.reverse()
        elif ans[0] == 'pop':
            lst.pop()

下面这种非常简单的代码,python风格的,这里主要是一个join函数按照‘,’的连接方式将例如:insert 0 5,将0和5分别按照','连接方式连接起来并用字符串拼接方式组成基本语句,用eval函数执行,注意eval的执行格式,非常简洁:

# python 3
n = int(input())
l = []
for _ in range(n):
    s = input().split()
    cmd = s[0]
    args = s[1:]
    if cmd !="print":
        cmd += "("+ ",".join(args) +")"    #这里主要通过逗号连接,若有两个参数用逗号连接,1个参数不会连接的,然后组成字符串用eval执行
        eval('l.'+cmd)
    else:
        print(l)
###这里都是些个人学习的理解,理解不对的地方请你指出我们一起进步,谢谢###

猜你喜欢

转载自blog.csdn.net/small__snail__5/article/details/80587646