gpt4 book ai didi

python - 在两个整数列表之间连续选择较大的数字

转载 作者:行者123 更新时间:2023-12-05 05:45:37 25 4
gpt4 key购买 nike

我一直在尝试编写概念上简单明了的 Python 代码,但一直未能弄清楚如何使用优雅的代码来做到这一点。

基本上,给定两个按升序排列的整数列表:

A = [5, 6, 7, 9, 35, 47, 88, 100] 
B = [3, 12, 44, 78, 94, 122, 186]
C = []

从列表 A 开始,我想将连续列表(A-B-A-B-A。因此)中的下一个更高的数字放入空列表 C。

在执行中,这会产生

C = [5,12,35,44,47,78,88,94,100,122] 

并以 122 结尾,因为我们在列表 A 中找不到更高的数字。

最佳答案

您可以利用 itertools.cycle在两个列表之间切换。一旦可以执行此操作,就可以使用 filter() 从当前迭代器中获取下一个较大的值,并跟踪目前看到的最大值。

from itertools import  cycle

def get_seq(A, B):
if not A: # handle case where A is empty
return

its = cycle((iter(A), iter(B)))
current_val = A[0] - 1

for i in its:
try:
current_val = next(filter(lambda n: n > current_val, i))
except StopIteration:
return
yield current_val


A = [5, 9, 35, 47, 88, 100]
B = [3, 12, 44, 78, 94, 122, 186]

list(get_seq(A, B))
# [5, 12, 35, 44, 47, 78, 88, 94, 100, 122]

如果您知道 A 不会为空,您可以稍微简化一下。

关于python - 在两个整数列表之间连续选择较大的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71303956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com