我正在尝试创建一个包含原始列表的前两个元素的新列表
答案 0 :(得分:0)
怎么样
# items = [5, 2, 9, 1, 7, 4, 6, 3, 8]
items[:2] + [sorted(items[i:i+3])[1] for i in range(len(items)-2)]
# [5, 2, 5, 2, 7, 4, 6, 4, 6]
答案 1 :(得分:0)
您可以编写一个辅助函数,该函数从一组输入中返回中位数:
input_list = [5, 2, 9, 1, 7, 4, 6, 3, 8]
output_list = input_list[:2]
def find_median(nums):
ordered_list = sorted(nums)
return ordered_list[1]
for num in range(len(input_list)-2):
nums = [input_list[num], input_list[num+1], input_list[num+2]]
output_list.append(find_median(nums))
print(output_list)
首先将input_list
的前两个元素附加到我们的output_list
中。由于您一次只能从一组3个元素中找到中位数,因此您无需一直循环到列表的末尾-可以忽略最后两个元素。然后,我们从input_list
获取3个元素的组,然后将其传递给计算中位数的函数。根据定义,中位数是中间值,因此我们可以简单地按值对列表进行排序,然后返回第二个元素。然后,我们将返回的值附加到我们的output_list
中。