Python 列表 使用练习

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)

代码运行演示如下:
list comprehension
说明:
[int(i) for i in nums.split(',')]是列表表达式,有更高的执行效率;
sorted(result_list,key=lambda i:i[0])对列表进行排序,因为列表中有多个元素,要根据每个元素的第一个子元素来排序,必须使用key来指定排序所依据的元素,同时还是用了lambda表达式,给定一个元素,返回第一个子元素。

发布了111 篇原创文章 · 获赞 1129 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/CUFEECR/article/details/105475176