首页 > 解决方案 > 如何在 Python 中按顺序将列表元素添加到另一个列表?

问题描述

我有一个十进制数字的“列表”和一个“空白列表”。我希望按以下顺序将列表成员添加到空白列表中: 1. 将列表中两个整数之间的每个元素的索引添加到空白列表的较低整数中。2. 如果列表的两个元素在同一区间内,则优先考虑小数点较大的元素。例如,元素 1.23、1.59 和 1.56 在两个整数 1 和 2 之间。然后将它们的索引添加到空白列表的第一个列表中。此外,由于 1.59 大于 1.56 且大于 1.23,因此它们的索引顺序为: [6, 3, 8] 我想要输出,但是如果您运行以下代码,则会显示 Wrong_Output。

List = [1.23, 2.46, 4.85, 0.76, 1.59, 1.56, 0.84, 2.12, 0.1]
Blank_list = [[], [], [], [], []]
Output = [[6, 3, 8], [4, 5, 0], [1, 7], [], [2]]
Wrong_Output = [[8, 6, 3], [5, 0, 4], [1, 7], [], [2]]

for index in range(0, len(List)):
    for sub in range(0, 5):
        if sub < List[index] < sub + 1:
            max_num = List[index-1]
            if List[index] < max_num:
                Blank_list[sub].insert(0, index)
            else:
                Blank_list[sub].append(index)
print(Blank_list)

标签: pythonlist

解决方案


根据您的规格,output[0]应该是[8, 3, 6]- 匹配的值是(分别)[0.1, 0.76, 0.84]

假设输出示例错误且规范正确,最简单的方法是在子列表填充后对其进行排序。您可以使用以下key参数执行此操作list.sort()

source = [1.23, 2.46, 4.85, 0.76, 1.59, 1.56, 0.84, 2.12, 0.1]
results = [[], [], [], [], []]

for index, value in enumerate(source):
    results[int(value)].append(index)

for sub in results:
    sub.sort(key=lambda index: source[index])

print(results)

推荐阅读