[英]why this for-loop doesn't run the number of times indicates?
我不知道我在做什么錯。 我認為它只運行第一個命令,為什么它只打印一次列表卻不運行其余命令?
if __name__ == '__main__':
N = int(input())
lis = []
def dance(string, lis):
return {
'insert': lis.insert(int(string[1]),int(string[2])),
'print': print(lis),
'remove': lis.remove(string[1]),
'append': lis.append(string[1]),
'sort': lis.sort(),
'pop': lis.pop(),
'reverse': lis.reverse(),
}[string][0]
for i in range(N):
string=input().split()
dance(string, lis)
輸入
12
insert 0 5
insert 1 10
insert 0 6
print
remove 6
append 9
append 1
sort
print
您的函數會在選擇其中一種方法之前調用所有方法:
def dance(string, lis):
return {
'insert': lis.insert(int(string[1]),int(string[2])),
'print': print(lis),
'remove': lis.remove(string[1]),
'append': lis.append(string[1]),
'sort': lis.sort(),
'pop': lis.pop(),
'reverse': lis.reverse(),
}[string][0]
您應該將每個包裹在一個lambda中,然后再調用所選的包裹:
def dance(string, lis):
return {
'insert': lambda: lis.insert(int(string[1]),int(string[2])),
'print': lambda: print(lis),
'remove': lambda: lis.remove(string[1]),
'append': lambda: lis.append(string[1]),
'sort': lambda: lis.sort(),
'pop': lambda: lis.pop(),
'reverse': lambda: lis.reverse(),
}[string[0]]()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.