Python 列表 使用练习
程序员文章站
2022-04-18 20:31:33
...
1.列表表达式与列表排序
列表中的元素也是可迭代的对象如列表、元组等时,要根据这些元素的某个子元素对列表排序,常规排序方式失效,需要用sorted()
函数并指定key。
题目:
输入一组数到列表nums,请找到列表中任意两个元素相加能够等于9的元素,形成一个元组,使其小数在前大数在后,如:(2,7),(1,8)。重复的元组元素只保留一个,结果按元组第一个元素从小到大顺序输出。
【样例输入】numbers:3,4,5,7,2,8,1
【样例输出】
[(1, 8), (2, 7), (4, 5)]
示例解答如下:
def get_tuple(num_list):
temp_list = []
for i in num_list:
if (9 - i) in num_list:
min = (9 - i) if (i >= (9 - i)) else i
max = i if min == (9 - i) else (9 - i)
if (min,max) not in temp_list:
temp_list.append((min,max))
return temp_list
nums = input()
num_list = [int(i) for i in nums.split(',')]
result_list = get_tuple(num_list)
result_list = sorted(result_list,key=lambda i:i[0])
print(result_list)
代码运行演示如下:
说明:[int(i) for i in nums.split(',')]
是列表表达式,有更高的执行效率;sorted(result_list,key=lambda i:i[0])
对列表进行排序,因为列表中有多个元素,要根据每个元素的第一个子元素来排序,必须使用key来指定排序所依据的元素,同时还是用了lambda表达式,给定一个元素,返回第一个子元素。