我不确定如何编写用于排序的函数(使用 Key 参数)和使用 Lambda 表达式重写函数
I'm Unsure How to Write a Function for Sorting (Using the Key Parameter) and Rewrite the Function Using a Lambda Expression
创建一个名为 last_four 的函数,它接受 ID 号和 return 最后四位数字。例如,数字 17573005 应该 return 3005。然后,使用此函数将存储在变量 ids 中的 ID 列表从低到高排序。将此排序列表保存在变量 sorted_ids 中。提示:请记住,只能索引字符串,因此可能需要转换。
问题的第二部分是,"Sort the list ids by the last four digits of each id. Do this using lambda and not using a defined function. Save this sorted list in the variable sorted_id"
我已经定义了我的函数定义,以及它接收的输入。我创建了一个空列表,然后我创建了一个 for 循环来遍历我的输入值,我在其中附加了最后四位数字到我创建的空列表。我对输入中的所有项目都这样做。我使用 sorted 函数将我创建的列表设置为等于其自身的排序版本,并且我有函数 returning 排序列表。
然后我使用指定的输入参数将变量 sorted_ids 设置为等于 last_four。
def last_four(x):
r = []
for i in x:
r.append(str(i)[-4:])
r = sorted(r)
print(r)
return r
ids = [17573005, 17572342, 17579000, 17570002, 17572345, 17579329]
sorted_ids = last_four(ids)
当我 运行 上面的代码时,我收到一条错误消息,说 "Error: TypeError: 'int' object is not iterable" 因为输入是一个 ID 列表。通过阅读如何解决这个问题,我认为我的结果应该类似于“sorted_ids = sorted(ids, key = last_four)
”。当我尝试使用上一句中的代码片段时,我仍然遇到与之前提到的相同的 TypeError。我不确定如何使用可选的 key 参数来编写它。
我还需要在没有定义函数的情况下使用 Lambda 表达式编写函数 last_four 并得到相同的结果,但我不确定该怎么做。
如有任何指导,我们将不胜感激。
要使用 sorted
和 lambda
函数作为 key
执行此操作,您需要指定要对 [=13] 中列表的每个元素执行的操作=] 功能。在这种情况下,您希望对每个 id 的最后四个数字进行子集化,这只能通过将整数 id 转换为字符串来完成。
这意味着 sorted
表达式与 key
的 lambda
函数是:
ids = [17573005, 17572342, 17579000, 17570002, 17572345, 17579329]
sorted(ids, key=lambda x: str(x)[-4:])
# Output
[17570002, 17572342, 17572345, 17573005, 17579000, 17579329]
这表示在将 id 转换为字符串后,按每个 id 的最后四位数字对列表进行排序。
使用命名函数执行此操作的等效方法是:
def last_four(x):
return str(x)[-4:]
sorted(ids, key=last_four)
选择权在你。 lambda
表达式代码较少,但命名函数 (last_four
) 可能更容易理解。
这是错误的
def last_four(x):
r = []
对于我在 x 中:
r.append(str(i)[-4:])
r = sorted(r)
print(r)
return r
ids = [17573005, 17572342, 17579000, 17570002, 17572345, 17579329]
sorted_ids = last_four(ids)
你可以试试这个:
def last_four(x):
x = x-17570000
return x
a
ids = [17573005, 17572342, 17579000, 17570002, 17572345, 17579329]
sorted_ids = sorted(ids, key=lambda x:last_four(x))
print(sorted_ids)
最好的方法是取 mod 个数字。例如:17573005%10000=3005 这是要求的结果。
def last_four(x):
return x%10000
然后调用这个函数作为sorted()
函数的key
ids = [17573005, 17572342, 17579000, 17570002, 17572345, 17579329]
sorted_ids = sorted(ids,key=last_four)
现在使用 lambda 看起来像:
sorted_id = sorted(ids,key = lambda k: k%10000)
创建一个名为 last_four 的函数,它接受 ID 号和 return 最后四位数字。例如,数字 17573005 应该 return 3005。然后,使用此函数将存储在变量 ids 中的 ID 列表从低到高排序。将此排序列表保存在变量 sorted_ids 中。提示:请记住,只能索引字符串,因此可能需要转换。
问题的第二部分是,"Sort the list ids by the last four digits of each id. Do this using lambda and not using a defined function. Save this sorted list in the variable sorted_id"
我已经定义了我的函数定义,以及它接收的输入。我创建了一个空列表,然后我创建了一个 for 循环来遍历我的输入值,我在其中附加了最后四位数字到我创建的空列表。我对输入中的所有项目都这样做。我使用 sorted 函数将我创建的列表设置为等于其自身的排序版本,并且我有函数 returning 排序列表。
然后我使用指定的输入参数将变量 sorted_ids 设置为等于 last_four。
def last_four(x):
r = []
for i in x:
r.append(str(i)[-4:])
r = sorted(r)
print(r)
return r
ids = [17573005, 17572342, 17579000, 17570002, 17572345, 17579329]
sorted_ids = last_four(ids)
当我 运行 上面的代码时,我收到一条错误消息,说 "Error: TypeError: 'int' object is not iterable" 因为输入是一个 ID 列表。通过阅读如何解决这个问题,我认为我的结果应该类似于“sorted_ids = sorted(ids, key = last_four)
”。当我尝试使用上一句中的代码片段时,我仍然遇到与之前提到的相同的 TypeError。我不确定如何使用可选的 key 参数来编写它。
我还需要在没有定义函数的情况下使用 Lambda 表达式编写函数 last_four 并得到相同的结果,但我不确定该怎么做。
如有任何指导,我们将不胜感激。
要使用 sorted
和 lambda
函数作为 key
执行此操作,您需要指定要对 [=13] 中列表的每个元素执行的操作=] 功能。在这种情况下,您希望对每个 id 的最后四个数字进行子集化,这只能通过将整数 id 转换为字符串来完成。
这意味着 sorted
表达式与 key
的 lambda
函数是:
ids = [17573005, 17572342, 17579000, 17570002, 17572345, 17579329]
sorted(ids, key=lambda x: str(x)[-4:])
# Output
[17570002, 17572342, 17572345, 17573005, 17579000, 17579329]
这表示在将 id 转换为字符串后,按每个 id 的最后四位数字对列表进行排序。
使用命名函数执行此操作的等效方法是:
def last_four(x):
return str(x)[-4:]
sorted(ids, key=last_four)
选择权在你。 lambda
表达式代码较少,但命名函数 (last_four
) 可能更容易理解。
这是错误的
def last_four(x): r = [] 对于我在 x 中: r.append(str(i)[-4:])
r = sorted(r)
print(r)
return r
ids = [17573005, 17572342, 17579000, 17570002, 17572345, 17579329]
sorted_ids = last_four(ids)
你可以试试这个:
def last_four(x):
x = x-17570000
return x
a
ids = [17573005, 17572342, 17579000, 17570002, 17572345, 17579329]
sorted_ids = sorted(ids, key=lambda x:last_four(x))
print(sorted_ids)
最好的方法是取 mod 个数字。例如:17573005%10000=3005 这是要求的结果。
def last_four(x):
return x%10000
然后调用这个函数作为sorted()
函数的key
ids = [17573005, 17572342, 17579000, 17570002, 17572345, 17579329]
sorted_ids = sorted(ids,key=last_four)
现在使用 lambda 看起来像:
sorted_id = sorted(ids,key = lambda k: k%10000)