Python挑战练习-进阶挑战42
编写一个程序来提取嵌套元组中的唯一元素。
例如,在嵌套元组((1,2,3),(2,4,6),(2,3,5))
中,2重复出现了3次,3重复出现了2次,但我们的输出列表只会包含2、3一次。
即:[1, 2, 3, 4, 5, 6]
-
定义函数
get_unique_elements()
,函数接受一个参数 - 一个包含三个元组的嵌套元组。 -
在函数内,提取所有元组中的独立元素,确保不重复提取元素。
-
以列表的形式返回唯一的元素,并从小到大排序。
分析:不重复提取元素,也就是去重复,想到了可以利用集合的特点,但是本题不能直接转化成集合,因为输入的是一个嵌套元组,直接转的话,元组将作为集合中的一个元素,因此要写两个for循环,先循环遍历嵌套元组中的每个子元组,再循环遍历子元组中的每个元素。
def get_unique_elements(nested_tuple):
unique_elements = set()
for sub_tuple in nested_tuple:
for element in sub_tuple:
unique_elements.add(element)
unique_list = list(unique_elements)
unique_list.sort()
return unique_list
# 初始化嵌套元组
nested_tuples = []
# 获取用户输入
for _ in range(3):
tuple_elements = tuple(map(int, input().split()))
nested_tuples.append(tuple_elements)
# 调用函数
print(get_unique_elements(nested_tuples))
利用列表推导式和sorted函数
def get_unique_elements(nested_tuple):
unique_elements = set(element for sub_tuple in nested_tuple for element in sub_tuple)
return sorted(unique_elements)