У меня есть два списка:
a = [1,3,6,10,20]
b = [2,4,9,12,15,22,24,25]
Теперь я хотел бы создать новый список, содержащий пары из двух предыдущих списков. Пары определены так:
- Левое значение [l, ..]:
a[i]
- Справа [.., r]: наибольшее число в
b
между a[i]
и a[i+1]
, если существует a[i+1]
, иначе просто больше a[i]
, если a[i]
существует, еще больше чем a[-1]
с 0 < i < max(len(a),len(b))
Результат будет выглядеть так:
pair = [[1,2],[3,4],[6,9],[10,15],[20,25]]
Кто-нибудь знает, как это сделать?
Это то, что я сделал до сих пор:
a = [1,3,6,10,20]
b = [2,4,9,12,15,22,24,25]
pairs = []
counter = 0
for i in range(max(len(a),len(b))):
try:
# get a[i]
ai = a[i]
except:
ai = a[-1]
try:
# get a[i+1]
ai1 = a[i+1]
except:
ai1 = b[-1]+1
temp = []
for bi in b:
if ai < bi and bi < ai1:
temp.append(bi)
# Avoid adding the last element of b again and again until i = len(b)
if max(temp) == b[-1]:
counter = counter +1
if counter <= 1:
print(max(temp))
pairs.append([ai,max(temp)])
Все в порядке, так как он выполняет свою работу, но мне было интересно, есть ли лучший, более эффективный способ сделать это?