python - 如何在 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)
解决方案
根据您的规格,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)
推荐阅读
- docker - Docker - 主机的 localhost 在分配的 docker 端口上超时
- sparql - 如何使用 SPARQL 查询在 rdf:RDF/XML 中的描述中获取信息?
- vb.net - 如何用 try-catch 替换 On Error Resume Next?
- java - 缓存 AmazonSQS 对象好吗
- swift - 具有 3 列的 UICollectionView 不会产生所需的结果
- c# - C# 从文本文件中检索不同的数据类型数据并将其存储到变量中
- javascript - 无论窗口大小如何,都相对于窗口定位元素
- python - Python 3 - 将用户名发送到 Gmail 后的 Socket SMTP 超时
- django - 如何在 Django 管理页面上合并表单中的默认字段
- python - 傅里叶变换作为python中的降维技术