来自 hackerrank 的排序 phone 数字的问题
Problem with sorted phone numbers from hackerrank
我知道我的尝试很基础,我对 python 的了解也是如此。
该问题要求从用户那里获取多个数字,并从其左侧删除可能的 0、+91 或 91 以使它们成为 10 位数字,然后排序并打印它们。
我试过了num_list[1] = num_list[1][len(num_list[1])-10:]
。它有效,所以我试图将它放入我正在研究的列表理解格式,但它当时不起作用。我需要有关如何做的帮助,希望能更好地理解何时应该使用理解格式。
n = int(input()) # get number of phone numbers from user
num_list = [] # an empty list to store phone numbers in
num_list = [input() for _ in range(n)] # store phone numbers in num_list
##################################
num_list = [num_list[num] = num_list[num][len(num_list[num])-10:] for num in num_list] #remove possible 0, +91, 91 from beginning of numbers
########################################
num_list = sorted(num_list)
num_list = ["+91 "+num[:5]+" "+num[5:] for num in num_list]
print(*num_list , sep="\n")
您不应该在列表理解中直接赋值。
您要查找的语法是:
num_list = [num[-10:] for num in num_list]
逻辑上等同于:
cleaned_list = []
for num in num_list:
cleaned_list.append(num[-10:])
num_list = cleaned_list
我知道我的尝试很基础,我对 python 的了解也是如此。
该问题要求从用户那里获取多个数字,并从其左侧删除可能的 0、+91 或 91 以使它们成为 10 位数字,然后排序并打印它们。
我试过了num_list[1] = num_list[1][len(num_list[1])-10:]
。它有效,所以我试图将它放入我正在研究的列表理解格式,但它当时不起作用。我需要有关如何做的帮助,希望能更好地理解何时应该使用理解格式。
n = int(input()) # get number of phone numbers from user
num_list = [] # an empty list to store phone numbers in
num_list = [input() for _ in range(n)] # store phone numbers in num_list
##################################
num_list = [num_list[num] = num_list[num][len(num_list[num])-10:] for num in num_list] #remove possible 0, +91, 91 from beginning of numbers
########################################
num_list = sorted(num_list)
num_list = ["+91 "+num[:5]+" "+num[5:] for num in num_list]
print(*num_list , sep="\n")
您不应该在列表理解中直接赋值。
您要查找的语法是:
num_list = [num[-10:] for num in num_list]
逻辑上等同于:
cleaned_list = []
for num in num_list:
cleaned_list.append(num[-10:])
num_list = cleaned_list