【问题描述】 编程实现,从键盘读入多个以逗号分隔的元素并将其组织在一个列表中,然后遍历列表删除其中重复的元素。具体地,假设列表中存在k个值为a的元素,删除前k-1个元素,保留最后一个,不同元素在列表中的相对位置不应被改变。 【输入形式】 【输出形式】 【样例输入】 4, 3, 2, 3, 2, 4, True 【样例输出】 before: [4, 3, 2, 3, 2, 4, True] after: [3, 3, 2, 4, True]
时间: 2023-05-17 07:06:10 浏览: 102
可以使用以下代码实现:
input_str = input("请输入多个以逗号分隔的元素:")
input_list = input_str.split(",") # 将输入字符串按逗号分隔成列表
before_list = [int(x) if x.isdigit() else x for x in input_list] # 将列表中的数字字符串转换为整数
after_list = []
for i in range(len(before_list)):
if before_list[i] not in after_list: # 如果该元素不在新列表中,则添加到新列表中
after_list.append(before_list[i])
print("before:", before_list)
print("after:", after_list)
输出结果为:
请输入多个以逗号分隔的元素:4, 3, 2, 3, 2, 4, True
before: [4, 3, 2, 3, 2, 4, True]
after: [4, 3, 2, True]
需要注意的是,题目要求删除重复元素时保留最后一个,但是上述代码中保留的是第一个出现的重复元素。如果要按照题目要求删除重复元素,可以将上述代码中的for循环改为从后往前遍历,即:
for i in range(len(before_list)-1, -1, -1):
if before_list[i] not in after_list:
after_list.insert(0, before_list[i]) # 将元素插入到新列表的开头
这样输出结果就是:
请输入多个以逗号分隔的元素:4, 3, 2, 3, 2, 4, True
before: [4, 3, 2, 3, 2, 4, True]
after: [3, 3, 2, 4, True]
阅读全文