python - 如何通过查看比较运算符对列表进行排名?
问题描述
我试图通过查看 B 列表中的比较运算符来比较 A 列表,并且我试图将 A 列表放入您的 C 列表中。列表 A 和 B 可以是从 1 到 n。例如;
A = [1,2,33,8,3]
B = ["<",">","<","<"]
输出;
C=[1,33,2,3,8]
我可以为此安装什么算法?
解决方案
第一排序A
。标识此排序列表中第一个和最后一个值的索引。
然后从列表 B 中迭代比较器。当它是 时<
,取 A 的低端的值,并增加相应的索引。为 时>
,从另一端取值,并递减对应的索引。
这是 Python 中的一个实现:
def rankbycomparators(A, B):
result = []
A = sorted(A)
lo = 0
hi = len(A)-1
for cmp in B:
if cmp == "<":
result.append(A[lo])
lo += 1
else:
result.append(A[hi])
hi -= 1
result.append(A[lo])
return result
使用示例:
A = [1,3,4,6,8]
B = ["<",">","<","<"]
print(rankbycomparators(A, B))
哪个输出[1, 8, 3, 4, 6]
推荐阅读
- pytorch - 计算精度问题
- android - 错误:外部资源 http://schemas.android.com/apk/res/android 未注册
- c - 我该如何解决这个问题预处理器?
- r - 在 R 中创建一个变量,指示数字“子组”行是否按组总和为“总”行
- python - 如何将数据从 C++ 发送到 Python
- rust - 如何预先计算值并分配给常量
- python - 绕过聊天限制作为 mod discord.py
- c# - 在 Timer.Interval 上设置计数器值
- python - 在 FastAPI 中获取查询参数作为字典
- python - 带有 Steam 客户端的 UI 自动化